From 89cbf27c985927436e4755101ea5e2167d7bce5c Mon Sep 17 00:00:00 2001 From: typebrook Date: Tue, 30 Oct 2018 15:17:20 +0000 Subject: [PATCH] Add 'natural=volcanal' into mountain_peak layer 1. Add new field "class" into mountain_peak layer, which is original value of "natural" tag 2. Reformat layer.sql --- layers/mountain_peak/layer.sql | 69 +++++++++++++++-------- layers/mountain_peak/mapping.yaml | 1 + layers/mountain_peak/mapping_diagram.png | Bin 3092 -> 4265 bytes layers/mountain_peak/mountain_peak.yaml | 8 ++- 4 files changed, 54 insertions(+), 24 deletions(-) diff --git a/layers/mountain_peak/layer.sql b/layers/mountain_peak/layer.sql index 1fc292c3..6c9643cd 100644 --- a/layers/mountain_peak/layer.sql +++ b/layers/mountain_peak/layer.sql @@ -2,29 +2,52 @@ -- etldoc: layer_mountain_peak[shape=record fillcolor=lightpink, -- etldoc: style="rounded,filled", label="layer_mountain_peak | z7+" ] ; -CREATE OR REPLACE FUNCTION layer_mountain_peak(bbox geometry, zoom_level integer, pixel_width numeric) -RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, ele int, ele_ft int, "rank" int) AS $$ +CREATE OR REPLACE FUNCTION layer_mountain_peak( + bbox geometry, + zoom_level integer, + pixel_width numeric) + RETURNS TABLE( + osm_id bigint, + geometry geometry, + name text, + name_en text, + name_de text, + class text, + tags hstore, + ele int, + ele_ft int, + "rank" int) AS +$$ -- etldoc: osm_peak_point -> layer_mountain_peak:z7_ - SELECT osm_id, geometry, name, name_en, name_de, tags, ele::int, ele_ft::int, rank::int - FROM ( - SELECT osm_id, geometry, name, - COALESCE(NULLIF(name_en, ''), name) AS name_en, - COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, - tags, - substring(ele from E'^(-?\\d+)(\\D|$)')::int AS ele, - round(substring(ele from E'^(-?\\d+)(\\D|$)')::int*3.2808399)::int AS ele_ft, - row_number() OVER ( - PARTITION BY LabelGrid(geometry, 100 * pixel_width) - ORDER BY ( - substring(ele from E'^(-?\\d+)(\\D|$)')::int + - (CASE WHEN NULLIF(wikipedia, '') is not null THEN 10000 ELSE 0 END) + - (CASE WHEN NULLIF(name, '') is not null THEN 10000 ELSE 0 END) - ) DESC - )::int AS "rank" - FROM osm_peak_point - WHERE geometry && bbox AND ele is not null AND ele ~ E'^-?\\d+' - ) AS ranked_peaks - WHERE zoom_level >= 7 AND (rank <= 5 OR zoom_level >= 14) - ORDER BY "rank" ASC; + SELECT + osm_id, + geometry, + name, + name_en, + name_de, + tags -> 'natural' AS class, + tags, + ele::int, + ele_ft::int, + rank::int FROM ( + SELECT osm_id, geometry, name, + COALESCE(NULLIF(name_en, ''), name) AS name_en, + COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, + tags, + substring(ele from E'^(-?\\d+)(\\D|$)')::int AS ele, + round(substring(ele from E'^(-?\\d+)(\\D|$)')::int*3.2808399)::int AS ele_ft, + row_number() OVER ( + PARTITION BY LabelGrid(geometry, 100 * pixel_width) + ORDER BY ( + substring(ele from E'^(-?\\d+)(\\D|$)')::int + + (CASE WHEN NULLIF(wikipedia, '') is not null THEN 10000 ELSE 0 END) + + (CASE WHEN NULLIF(name, '') is not null THEN 10000 ELSE 0 END) + ) DESC + )::int AS "rank" + FROM osm_peak_point + WHERE geometry && bbox AND ele is not null AND ele ~ E'^-?\\d+' + ) AS ranked_peaks + WHERE zoom_level >= 7 AND (rank <= 5 OR zoom_level >= 14) + ORDER BY "rank" ASC; $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/mountain_peak/mapping.yaml b/layers/mountain_peak/mapping.yaml index 890fd583..7b9cc688 100644 --- a/layers/mountain_peak/mapping.yaml +++ b/layers/mountain_peak/mapping.yaml @@ -28,3 +28,4 @@ tables: mapping: natural: - peak + - volcano diff --git a/layers/mountain_peak/mapping_diagram.png b/layers/mountain_peak/mapping_diagram.png index 842b8f56d20d13972e89b033f0a9b6a1e0960e24..77e06dbdbdb8c3f2142ca88434b881614098027d 100644 GIT binary patch literal 4265 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 diff --git a/layers/mountain_peak/mountain_peak.yaml b/layers/mountain_peak/mountain_peak.yaml index 8d829107..1d75bae6 100644 --- a/layers/mountain_peak/mountain_peak.yaml +++ b/layers/mountain_peak/mountain_peak.yaml @@ -8,13 +8,19 @@ layer: 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 mountain peak and volcano. + values: + - peak + - volcano ele: Elevation (`ele`) in meters. ele_ft: Elevation (`ele`) in feets. rank: Rank of the peak within one tile (starting at 1 that is the most important peak). datasource: geometry_field: geometry srid: 900913 - query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, ele, ele_ft, rank FROM layer_mountain_peak(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t + query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, class, ele, ele_ft, rank FROM layer_mountain_peak(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t schema: - ./update_peak_point.sql - ./layer.sql