diff --git a/layers/landcover/landcover.sql b/layers/landcover/landcover.sql index 3123fc5..a0b27ce 100644 --- a/layers/landcover/landcover.sql +++ b/layers/landcover/landcover.sql @@ -14,7 +14,7 @@ CREATE OR REPLACE FUNCTION landcover_class(landuse VARCHAR, "natural" VARCHAR, w WHEN landuse IN ('farmland', 'farm', 'orchard', 'vineyard', 'plant_nursery') THEN 'farmland' WHEN "natural" IN ('glacier', 'ice_shelf') THEN 'ice' WHEN "natural"='wood' OR landuse IN ('forest', 'wood') THEN 'wood' - WHEN "natural"='grassland' OR landuse IN ('grass', 'meadow', 'village_green', 'allotments', 'park', 'recreation_ground', 'grassland') THEN 'grass' + WHEN "natural"='grassland' OR landuse IN ('grass', 'meadow', 'allotments', 'grassland') THEN 'grass' WHEN "natural"='wetland' OR wetland IN ('bog', 'swamp', 'wet_meadow', 'marsh', 'reedbed', 'saltern', 'tidalflat', 'saltmarsh', 'mangrove') THEN 'wetland' ELSE NULL END; diff --git a/layers/landcover/mapping.yaml b/layers/landcover/mapping.yaml index 2ac8741..295c332 100644 --- a/layers/landcover/mapping.yaml +++ b/layers/landcover/mapping.yaml @@ -1,38 +1,44 @@ + generalized_tables: - + + # etldoc: imposm3 -> osm_landcover_polygon_gen6 + landcover_polygon_gen6: + source: landcover_polygon_gen5 + sql_filter: area>15000000 + tolerance: 300.0 + # etldoc: imposm3 -> osm_landcover_polygon_gen5 landcover_polygon_gen5: source: landcover_polygon_gen4 - sql_filter: area>15000000 - tolerance: 300.0 + sql_filter: area>4200000 + tolerance: 200.0 # etldoc: imposm3 -> osm_landcover_polygon_gen4 landcover_polygon_gen4: source: landcover_polygon_gen3 - sql_filter: area>4200000 - tolerance: 200.0 - - # etldoc: imposm3 -> osm_landcover_polygon_gen3 - landcover_polygon_gen3: - source: landcover_polygon_gen2 sql_filter: area>1200000 tolerance: 120.0 - # etldoc: imposm3 -> osm_landcover_polygon_gen2 - landcover_polygon_gen2: - source: landcover_polygon_gen1 + # etldoc: imposm3 -> osm_landcover_polygon_gen3 + landcover_polygon_gen3: + source: landcover_polygon_gen2 sql_filter: area>480000 tolerance: 80.0 - # etldoc: imposm3 -> osm_landcover_polygon_gen1 - landcover_polygon_gen1: - source: landcover_polygon + # etldoc: imposm3 -> osm_landcover_polygon_gen2 + landcover_polygon_gen2: + source: landcover_polygon_gen1 sql_filter: area>240000 tolerance: 50.0 + # etldoc: imposm3 -> osm_landcover_polygon_gen1 + landcover_polygon_gen1: + source: landcover_polygon + sql_filter: area>60000 + tolerance: 20.0 + tables: - - # etldoc: imposm3 -> osm_landcover_polygon + # etldoc: imposm3 -> osm_landcover_polygon landcover_polygon: fields: - name: osm_id @@ -61,9 +67,6 @@ tables: - grass - grassland - meadow - - park - - village_green - - recreation_ground - forest natural: - wetland diff --git a/layers/landuse/landuse.sql b/layers/landuse/landuse.sql index 25361be..321ec60 100644 --- a/layers/landuse/landuse.sql +++ b/layers/landuse/landuse.sql @@ -1,7 +1,6 @@ -CREATE OR REPLACE FUNCTION landuse_class(landuse TEXT, amenity TEXT, leisure TEXT, boundary TEXT) RETURNS TEXT AS $$ +CREATE OR REPLACE FUNCTION landuse_class(landuse TEXT, amenity TEXT, leisure TEXT) RETURNS TEXT AS $$ SELECT CASE - WHEN leisure IN ('nature_reserve', 'park') OR boundary='national_park' THEN 'park' WHEN amenity IN ('school', 'university', 'kindergarten', 'college', 'library') THEN 'school' WHEN landuse IN('hospital', 'railway', 'cemetery', 'military', 'residential') THEN landuse ELSE NULL @@ -10,73 +9,53 @@ $$ LANGUAGE SQL IMMUTABLE; -- etldoc: ne_50m_urban_areas -> landuse_z4 CREATE OR REPLACE VIEW landuse_z4 AS ( - SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, NULL::text AS boundary, scalerank + SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, scalerank FROM ne_50m_urban_areas WHERE scalerank <= 2 ); -- etldoc: ne_50m_urban_areas -> landuse_z5 CREATE OR REPLACE VIEW landuse_z5 AS ( - SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, NULL::text AS boundary, scalerank + SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, scalerank FROM ne_50m_urban_areas ); -- etldoc: ne_10m_urban_areas -> landuse_z6 CREATE OR REPLACE VIEW landuse_z6 AS ( - SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, NULL::text AS boundary, scalerank + SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, scalerank FROM ne_10m_urban_areas ); --- etldoc: osm_landuse_polygon_gen5 -> landuse_z8 -CREATE OR REPLACE VIEW landuse_z8 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen5 -); - --- etldoc: osm_landuse_polygon_gen4 -> landuse_z9 -CREATE OR REPLACE VIEW landuse_z9 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen4 -); - --- etldoc: osm_landuse_polygon_gen3 -> landuse_z10 -CREATE OR REPLACE VIEW landuse_z10 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen3 -); - --- etldoc: osm_landuse_polygon_gen2 -> landuse_z11 -CREATE OR REPLACE VIEW landuse_z11 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen2 -); - -- etldoc: osm_landuse_polygon_gen1 -> landuse_z12 CREATE OR REPLACE VIEW landuse_z12 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen1 + SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank FROM osm_landuse_polygon_gen1 ); -- etldoc: osm_landuse_polygon -> landuse_z13 CREATE OR REPLACE VIEW landuse_z13 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon + SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank FROM osm_landuse_polygon WHERE ST_Area(geometry) > 60000 ); -- etldoc: osm_landuse_polygon -> landuse_z14 CREATE OR REPLACE VIEW landuse_z14 AS ( - SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon + SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank FROM osm_landuse_polygon ); --- etldoc: layer_landuse[shape=record fillcolor=lightpink, style="rounded,filled", --- etldoc: label="layer_landuse | z4|z5|z6|z7| z8 | z9 | z10 | z11 | z12| z13| z14_" ] ; +-- etldoc: layer_landuse[shape=record fillcolor=lightpink, style="rounded,filled", +-- etldoc: label="layer_landuse | z4|z5|z6|z7| z8 | z9 | z10 | z12| z13| z14_" ] ; CREATE OR REPLACE FUNCTION layer_landuse(bbox geometry, zoom_level int) RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$ SELECT osm_id, geometry, - landuse_class(landuse, amenity, leisure, boundary) AS class, - COALESCE(NULLIF(landuse, ''), NULLIF(amenity, ''), NULLIF(leisure, ''), NULLIF(boundary, '')) AS subclass + landuse_class(landuse, amenity, leisure) AS class, + COALESCE(NULLIF(landuse, ''), NULLIF(amenity, ''), NULLIF(leisure, '')) AS subclass FROM ( -- etldoc: landuse_z4 -> layer_landuse:z4 SELECT * FROM landuse_z4 WHERE zoom_level = 4 UNION ALL - -- etldoc: landuse_z5 -> layer_landuse:z5 + -- etldoc: landuse_z5 -> layer_landuse:z5 SELECT * FROM landuse_z5 WHERE zoom_level = 5 UNION ALL @@ -84,29 +63,17 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$ -- etldoc: landuse_z6 -> layer_landuse:z7 -- etldoc: landuse_z6 -> layer_landuse:z8 -- etldoc: landuse_z6 -> layer_landuse:z9 - -- etldoc: landuse_z6 -> layer_landuse:z10 + -- etldoc: landuse_z6 -> layer_landuse:z10 SELECT * FROM landuse_z6 WHERE zoom_level BETWEEN 6 AND 10 AND scalerank-1 <= zoom_level UNION ALL - -- etldoc: landuse_z8 -> layer_landuse:z8 - SELECT * FROM landuse_z8 WHERE zoom_level = 8 - UNION ALL - -- etldoc: landuse_z9 -> layer_landuse:z9 - SELECT * FROM landuse_z9 WHERE zoom_level = 9 - UNION ALL - -- etldoc: landuse_z10 -> layer_landuse:z10 - SELECT * FROM landuse_z10 WHERE zoom_level = 10 - UNION ALL - -- etldoc: landuse_z11 -> layer_landuse:z11 - SELECT * FROM landuse_z11 WHERE zoom_level = 11 - UNION ALL - -- etldoc: landuse_z12 -> layer_landuse:z12 + -- etldoc: landuse_z12 -> layer_landuse:z12 SELECT * FROM landuse_z12 WHERE zoom_level = 12 UNION ALL - -- etldoc: landuse_z13 -> layer_landuse:z13 + -- etldoc: landuse_z13 -> layer_landuse:z13 SELECT * FROM landuse_z13 WHERE zoom_level = 13 UNION ALL - -- etldoc: landuse_z14 -> layer_landuse:z14_ + -- etldoc: landuse_z14 -> layer_landuse:z14 SELECT * FROM landuse_z14 WHERE zoom_level >= 14 ) AS zoom_levels WHERE geometry && bbox; diff --git a/layers/landuse/mapping.yaml b/layers/landuse/mapping.yaml index 76bffe8..dc3b7ea 100644 --- a/layers/landuse/mapping.yaml +++ b/layers/landuse/mapping.yaml @@ -1,37 +1,17 @@ generalized_tables: - - # etldoc: imposm3 -> osm_landuse_polygon_gen5 - landuse_polygon_gen5: - source: landuse_polygon_gen4 - sql_filter: area>15000000 - tolerance: 300.0 - - # etldoc: imposm3 -> osm_landuse_polygon_gen4 - landuse_polygon_gen4: - source: landuse_polygon_gen3 - sql_filter: area>4200000 - tolerance: 200.0 - - # etldoc: imposm3 -> osm_landuse_polygon_gen3 - landuse_polygon_gen3: - source: landuse_polygon_gen2 - sql_filter: area>1200000 - tolerance: 120.0 - - # etldoc: imposm3 -> osm_landuse_polygon_gen2 + # etldoc: imposm3 -> osm_landuse_polygon_gen2 landuse_polygon_gen2: source: landuse_polygon_gen1 - sql_filter: area>480000 - tolerance: 80.0 - - # etldoc: imposm3 -> osm_landuse_polygon_gen1 - landuse_polygon_gen1: - source: landuse_polygon sql_filter: area>240000 tolerance: 50.0 -tables: + # etldoc: imposm3 -> osm_landuse_polygon_gen1 + landuse_polygon_gen1: + source: landuse_polygon + sql_filter: area>60000 + tolerance: 20.0 +tables: # etldoc: imposm3 -> osm_landuse_polygon landuse_polygon: type: polygon @@ -49,9 +29,6 @@ tables: - name: leisure key: leisure type: string - - name: boundary - key: boundary - type: string - name: area type: pseudoarea mapping: @@ -66,8 +43,10 @@ tables: - railway - cemetery - military + # zoning + - residential + - commercial + - industrial + - retail leisure: - - nature_reserve - - park - boundary: - - national_park + - stadium