Remove mappings from landcover and landuse

This commit is contained in:
Lukas Martinelli 2016-11-28 19:16:00 +00:00
parent aed323bb99
commit 327bdc7313
4 changed files with 53 additions and 104 deletions

View File

@ -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 landuse IN ('farmland', 'farm', 'orchard', 'vineyard', 'plant_nursery') THEN 'farmland'
WHEN "natural" IN ('glacier', 'ice_shelf') THEN 'ice' WHEN "natural" IN ('glacier', 'ice_shelf') THEN 'ice'
WHEN "natural"='wood' OR landuse IN ('forest', 'wood') THEN 'wood' 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' WHEN "natural"='wetland' OR wetland IN ('bog', 'swamp', 'wet_meadow', 'marsh', 'reedbed', 'saltern', 'tidalflat', 'saltmarsh', 'mangrove') THEN 'wetland'
ELSE NULL ELSE NULL
END; END;

View File

@ -1,38 +1,44 @@
generalized_tables: 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 # etldoc: imposm3 -> osm_landcover_polygon_gen5
landcover_polygon_gen5: landcover_polygon_gen5:
source: landcover_polygon_gen4 source: landcover_polygon_gen4
sql_filter: area>15000000 sql_filter: area>4200000
tolerance: 300.0 tolerance: 200.0
# etldoc: imposm3 -> osm_landcover_polygon_gen4 # etldoc: imposm3 -> osm_landcover_polygon_gen4
landcover_polygon_gen4: landcover_polygon_gen4:
source: landcover_polygon_gen3 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 sql_filter: area>1200000
tolerance: 120.0 tolerance: 120.0
# etldoc: imposm3 -> osm_landcover_polygon_gen2 # etldoc: imposm3 -> osm_landcover_polygon_gen3
landcover_polygon_gen2: landcover_polygon_gen3:
source: landcover_polygon_gen1 source: landcover_polygon_gen2
sql_filter: area>480000 sql_filter: area>480000
tolerance: 80.0 tolerance: 80.0
# etldoc: imposm3 -> osm_landcover_polygon_gen1 # etldoc: imposm3 -> osm_landcover_polygon_gen2
landcover_polygon_gen1: landcover_polygon_gen2:
source: landcover_polygon source: landcover_polygon_gen1
sql_filter: area>240000 sql_filter: area>240000
tolerance: 50.0 tolerance: 50.0
# etldoc: imposm3 -> osm_landcover_polygon_gen1
landcover_polygon_gen1:
source: landcover_polygon
sql_filter: area>60000
tolerance: 20.0
tables: tables:
# etldoc: imposm3 -> osm_landcover_polygon
# etldoc: imposm3 -> osm_landcover_polygon
landcover_polygon: landcover_polygon:
fields: fields:
- name: osm_id - name: osm_id
@ -61,9 +67,6 @@ tables:
- grass - grass
- grassland - grassland
- meadow - meadow
- park
- village_green
- recreation_ground
- forest - forest
natural: natural:
- wetland - wetland

View File

@ -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 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 amenity IN ('school', 'university', 'kindergarten', 'college', 'library') THEN 'school'
WHEN landuse IN('hospital', 'railway', 'cemetery', 'military', 'residential') THEN landuse WHEN landuse IN('hospital', 'railway', 'cemetery', 'military', 'residential') THEN landuse
ELSE NULL ELSE NULL
@ -10,73 +9,53 @@ $$ LANGUAGE SQL IMMUTABLE;
-- etldoc: ne_50m_urban_areas -> landuse_z4 -- etldoc: ne_50m_urban_areas -> landuse_z4
CREATE OR REPLACE VIEW landuse_z4 AS ( 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 FROM ne_50m_urban_areas
WHERE scalerank <= 2 WHERE scalerank <= 2
); );
-- etldoc: ne_50m_urban_areas -> landuse_z5 -- etldoc: ne_50m_urban_areas -> landuse_z5
CREATE OR REPLACE VIEW landuse_z5 AS ( 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 FROM ne_50m_urban_areas
); );
-- etldoc: ne_10m_urban_areas -> landuse_z6 -- etldoc: ne_10m_urban_areas -> landuse_z6
CREATE OR REPLACE VIEW landuse_z6 AS ( 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 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 -- etldoc: osm_landuse_polygon_gen1 -> landuse_z12
CREATE OR REPLACE VIEW landuse_z12 AS ( 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 -- etldoc: osm_landuse_polygon -> landuse_z13
CREATE OR REPLACE VIEW landuse_z13 AS ( 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 WHERE ST_Area(geometry) > 60000
); );
-- etldoc: osm_landuse_polygon -> landuse_z14 -- etldoc: osm_landuse_polygon -> landuse_z14
CREATE OR REPLACE VIEW landuse_z14 AS ( 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: layer_landuse[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="layer_landuse |<z4> z4|<z5>z5|<z6>z6|<z7>z7| <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ; -- etldoc: label="layer_landuse |<z4> z4|<z5>z5|<z6>z6|<z7>z7| <z8> z8 |<z9> z9 |<z10> z10 |<z12> z12|<z13> z13|<z14_> z14_" ] ;
CREATE OR REPLACE FUNCTION layer_landuse(bbox geometry, zoom_level int) CREATE OR REPLACE FUNCTION layer_landuse(bbox geometry, zoom_level int)
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$
SELECT osm_id, geometry, SELECT osm_id, geometry,
landuse_class(landuse, amenity, leisure, boundary) AS class, landuse_class(landuse, amenity, leisure) AS class,
COALESCE(NULLIF(landuse, ''), NULLIF(amenity, ''), NULLIF(leisure, ''), NULLIF(boundary, '')) AS subclass COALESCE(NULLIF(landuse, ''), NULLIF(amenity, ''), NULLIF(leisure, '')) AS subclass
FROM ( FROM (
-- etldoc: landuse_z4 -> layer_landuse:z4 -- etldoc: landuse_z4 -> layer_landuse:z4
SELECT * FROM landuse_z4 SELECT * FROM landuse_z4
WHERE zoom_level = 4 WHERE zoom_level = 4
UNION ALL UNION ALL
-- etldoc: landuse_z5 -> layer_landuse:z5 -- etldoc: landuse_z5 -> layer_landuse:z5
SELECT * FROM landuse_z5 SELECT * FROM landuse_z5
WHERE zoom_level = 5 WHERE zoom_level = 5
UNION ALL 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:z7
-- etldoc: landuse_z6 -> layer_landuse:z8 -- etldoc: landuse_z6 -> layer_landuse:z8
-- etldoc: landuse_z6 -> layer_landuse:z9 -- etldoc: landuse_z6 -> layer_landuse:z9
-- etldoc: landuse_z6 -> layer_landuse:z10 -- etldoc: landuse_z6 -> layer_landuse:z10
SELECT * FROM landuse_z6 SELECT * FROM landuse_z6
WHERE zoom_level BETWEEN 6 AND 10 AND scalerank-1 <= zoom_level WHERE zoom_level BETWEEN 6 AND 10 AND scalerank-1 <= zoom_level
UNION ALL UNION ALL
-- etldoc: landuse_z8 -> layer_landuse:z8 -- etldoc: landuse_z12 -> layer_landuse:z12
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
SELECT * FROM landuse_z12 WHERE zoom_level = 12 SELECT * FROM landuse_z12 WHERE zoom_level = 12
UNION ALL UNION ALL
-- etldoc: landuse_z13 -> layer_landuse:z13 -- etldoc: landuse_z13 -> layer_landuse:z13
SELECT * FROM landuse_z13 WHERE zoom_level = 13 SELECT * FROM landuse_z13 WHERE zoom_level = 13
UNION ALL UNION ALL
-- etldoc: landuse_z14 -> layer_landuse:z14_ -- etldoc: landuse_z14 -> layer_landuse:z14
SELECT * FROM landuse_z14 WHERE zoom_level >= 14 SELECT * FROM landuse_z14 WHERE zoom_level >= 14
) AS zoom_levels ) AS zoom_levels
WHERE geometry && bbox; WHERE geometry && bbox;

View File

@ -1,37 +1,17 @@
generalized_tables: generalized_tables:
# etldoc: imposm3 -> osm_landuse_polygon_gen2
# 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
landuse_polygon_gen2: landuse_polygon_gen2:
source: landuse_polygon_gen1 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 sql_filter: area>240000
tolerance: 50.0 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 # etldoc: imposm3 -> osm_landuse_polygon
landuse_polygon: landuse_polygon:
type: polygon type: polygon
@ -49,9 +29,6 @@ tables:
- name: leisure - name: leisure
key: leisure key: leisure
type: string type: string
- name: boundary
key: boundary
type: string
- name: area - name: area
type: pseudoarea type: pseudoarea
mapping: mapping:
@ -66,8 +43,10 @@ tables:
- railway - railway
- cemetery - cemetery
- military - military
# zoning
- residential
- commercial
- industrial
- retail
leisure: leisure:
- nature_reserve - stadium
- park
boundary:
- national_park