diff --git a/layers/park/etl_diagram.png b/layers/park/etl_diagram.png index 0823df8..4eb1ea5 100644 Binary files a/layers/park/etl_diagram.png and b/layers/park/etl_diagram.png differ diff --git a/layers/park/layer.sql b/layers/park/layer.sql index 3c2c8b3..a38f5a8 100644 --- a/layers/park/layer.sql +++ b/layers/park/layer.sql @@ -1,55 +1,127 @@ -- etldoc: layer_park[shape=record fillcolor=lightpink, style="rounded,filled", -- etldoc: label="layer_park | z6 | z7 | z8 | z9 | z10 | z11 | z12| z13| z14+" ] ; -CREATE OR REPLACE FUNCTION layer_park(bbox geometry, zoom_level int) -RETURNS TABLE(osm_id bigint, geometry geometry, class text) AS $$ +CREATE OR REPLACE FUNCTION layer_park(bbox geometry, zoom_level int, pixel_width numeric) +RETURNS TABLE(osm_id bigint, geometry geometry, class text, name text, name_en text, name_de text, tags hstore, rank int) AS $$ + SELECT osm_id, geometry, class, name, name_en, name_de, tags, rank + FROM ( SELECT osm_id, geometry, - COALESCE(NULLIF(boundary, ''), NULLIF(leisure, '')) AS class + COALESCE(NULLIF(boundary, ''), NULLIF(leisure, '')) AS class, + name, name_en, name_de, tags, + NULL::int as rank FROM ( -- etldoc: osm_park_polygon_gen8 -> layer_park:z6 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen8 WHERE zoom_level = 6 UNION ALL -- etldoc: osm_park_polygon_gen7 -> layer_park:z7 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen7 WHERE zoom_level = 7 UNION ALL -- etldoc: osm_park_polygon_gen6 -> layer_park:z8 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen6 WHERE zoom_level = 8 UNION ALL -- etldoc: osm_park_polygon_gen5 -> layer_park:z9 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen5 WHERE zoom_level = 9 UNION ALL -- etldoc: osm_park_polygon_gen4 -> layer_park:z10 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen4 WHERE zoom_level = 10 UNION ALL -- etldoc: osm_park_polygon_gen3 -> layer_park:z11 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen3 WHERE zoom_level = 11 UNION ALL -- etldoc: osm_park_polygon_gen2 -> layer_park:z12 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen2 WHERE zoom_level = 12 UNION ALL -- etldoc: osm_park_polygon_gen1 -> layer_park:z13 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon_gen1 WHERE zoom_level = 13 UNION ALL -- etldoc: osm_park_polygon -> layer_park:z14 - SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank FROM osm_park_polygon WHERE zoom_level >= 14 - ) AS zoom_levels + ) AS park_polygon + + UNION ALL + SELECT osm_id, geometry_point AS geometry, + COALESCE(NULLIF(boundary, ''), NULLIF(leisure, '')) AS class, + name, name_en, name_de, tags, + row_number() OVER ( + PARTITION BY LabelGrid(geometry_point, 100 * pixel_width) + ORDER BY + (CASE WHEN boundary = 'national_park' THEN true ELSE false END) DESC, + (COALESCE(NULLIF(tags->'wikipedia', ''), NULLIF(tags->'wikidata', '')) IS NOT NULL) DESC, + area DESC + )::int AS "rank" + FROM ( + -- etldoc: osm_park_polygon_gen8 -> layer_park:z6 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen8 + WHERE zoom_level = 6 + UNION ALL + + -- etldoc: osm_park_polygon_gen7 -> layer_park:z7 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen7 + WHERE zoom_level = 7 + UNION ALL + + -- etldoc: osm_park_polygon_gen6 -> layer_park:z8 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen6 + WHERE zoom_level = 8 + UNION ALL + + -- etldoc: osm_park_polygon_gen5 -> layer_park:z9 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen5 + WHERE zoom_level = 9 + UNION ALL + + -- etldoc: osm_park_polygon_gen4 -> layer_park:z10 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen4 + WHERE zoom_level = 10 + UNION ALL + + -- etldoc: osm_park_polygon_gen3 -> layer_park:z11 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen3 + WHERE zoom_level = 11 + UNION ALL + + -- etldoc: osm_park_polygon_gen2 -> layer_park:z12 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen2 + WHERE zoom_level = 12 + UNION ALL + + -- etldoc: osm_park_polygon_gen1 -> layer_park:z13 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon_gen1 + WHERE zoom_level = 13 + UNION ALL + + -- etldoc: osm_park_polygon -> layer_park:z14 + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + FROM osm_park_polygon + WHERE zoom_level >= 14 + ) AS park_point + ) AS park_all + WHERE geometry && bbox; $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/park/park.yaml b/layers/park/park.yaml index 1f27e14..b7e5564 100644 --- a/layers/park/park.yaml +++ b/layers/park/park.yaml @@ -10,9 +10,13 @@ layer: values: - national_park - nature_reserve + name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the park (point features only). + name_en: English name `name:en` if available, otherwise `name` (point features only). + name_de: German name `name:de` if available, otherwise `name` or `name:en` (point features only). + rank: Rank of the park within one tile, starting at 1 that is the most important park (point features only). datasource: geometry_field: geometry - query: (SELECT geometry, class FROM layer_park(!bbox!, z(!scale_denominator!))) AS t + query: (SELECT geometry, class, name, name_en, name_de, {name_languages}, rank FROM layer_park(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t schema: - ./update_park_polygon.sql - ./layer.sql diff --git a/layers/park_label/README.md b/layers/park_label/README.md deleted file mode 100644 index 734586d..0000000 --- a/layers/park_label/README.md +++ /dev/null @@ -1,10 +0,0 @@ -## park_label - -### Docs -Read the layer documentation at **http://openmaptiles.org/schema#park_label** - -### Mapping Diagram -![Mapping diagram for park](mapping_diagram.png?raw=true) - -### ETL diagram -![ETL diagram for park](etl_diagram.png?raw=true) diff --git a/layers/park_label/etl_diagram.png b/layers/park_label/etl_diagram.png deleted file mode 100644 index c46c00b..0000000 Binary files a/layers/park_label/etl_diagram.png and /dev/null differ diff --git a/layers/park_label/layer.sql b/layers/park_label/layer.sql deleted file mode 100644 index 5565337..0000000 --- a/layers/park_label/layer.sql +++ /dev/null @@ -1,70 +0,0 @@ --- etldoc: layer_park_label[shape=record fillcolor=lightpink, style="rounded,filled", --- etldoc: label="layer_park | z6 | z7 | z8 | z9 | z10 | z11 | z12| z13| z14+" ] ; - -CREATE OR REPLACE FUNCTION layer_park_label(bbox geometry, zoom_level int, pixel_width numeric) -RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, class text, rank int) AS $$ - SELECT osm_id, geometry_point, name, name_en, name_de, tags, - COALESCE(NULLIF(boundary, ''), NULLIF(leisure, '')) AS class, - row_number() OVER ( - PARTITION BY LabelGrid(geometry_point, 100 * pixel_width) - ORDER BY - (CASE WHEN boundary = 'national_park' THEN true ELSE false END) DESC, - (COALESCE(NULLIF(tags->'wikipedia', ''), NULLIF(tags->'wikidata', '')) IS NOT NULL) DESC, - area DESC - )::int AS "rank" - FROM ( - -- etldoc: osm_park_polygon_gen8 -> layer_park_label:z6 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen8 - WHERE zoom_level = 6 - UNION ALL - - -- etldoc: osm_park_polygon_gen7 -> layer_park_label:z7 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen7 - WHERE zoom_level = 7 - UNION ALL - - -- etldoc: osm_park_polygon_gen6 -> layer_park_label:z8 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen6 - WHERE zoom_level = 8 - UNION ALL - - -- etldoc: osm_park_polygon_gen5 -> layer_park_label:z9 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen5 - WHERE zoom_level = 9 - UNION ALL - - -- etldoc: osm_park_polygon_gen4 -> layer_park_label:z10 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen4 - WHERE zoom_level = 10 - UNION ALL - - -- etldoc: osm_park_polygon_gen3 -> layer_park_label:z11 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen3 - WHERE zoom_level = 11 - UNION ALL - - -- etldoc: osm_park_polygon_gen2 -> layer_park_label:z12 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen2 - WHERE zoom_level = 12 - UNION ALL - - -- etldoc: osm_park_polygon_gen1 -> layer_park_label:z13 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon_gen1 - WHERE zoom_level = 13 - UNION ALL - - -- etldoc: osm_park_polygon -> layer_park_label:z14 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area - FROM osm_park_polygon - WHERE zoom_level >= 14 - ) AS zoom_levels - WHERE geometry_point && bbox; -$$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/park_label/mapping_diagram.png b/layers/park_label/mapping_diagram.png deleted file mode 100644 index 0c59a6d..0000000 Binary files a/layers/park_label/mapping_diagram.png and /dev/null differ diff --git a/layers/park_label/park_label.yaml b/layers/park_label/park_label.yaml deleted file mode 100644 index bfd60a7..0000000 --- a/layers/park_label/park_label.yaml +++ /dev/null @@ -1,24 +0,0 @@ -layer: - id: "park_label" - description: | - Labels for `park` layer. - buffer_size: 64 - fields: - name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the peak. - name_en: English name `name:en` if available, otherwise `name`. - name_de: German name `name:de` if available, otherwise `name` or `name:en`. - class: - description: | - Use the **class** to differentiate between different parks. - values: - - national_park - - nature_reserve - rank: Rank of the park within one tile (starting at 1 that is the most important park). - datasource: - geometry_field: geometry - query: (SELECT geometry, class, name, name_en, name_de, {name_languages}, rank FROM layer_park_label(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t -schema: - - ./layer.sql -datasources: - - type: imposm3 - mapping_file: ../park/mapping.yaml diff --git a/openmaptiles.yaml b/openmaptiles.yaml index 5617608..67067e8 100644 --- a/openmaptiles.yaml +++ b/openmaptiles.yaml @@ -6,7 +6,6 @@ tileset: - layers/landuse/landuse.yaml - layers/mountain_peak/mountain_peak.yaml - layers/park/park.yaml - - layers/park_label/park_label.yaml - layers/boundary/boundary.yaml - layers/aeroway/aeroway.yaml - layers/transportation/transportation.yaml