From f947cbffc3a1f4c74cd88865d71ba9d3cfb52c67 Mon Sep 17 00:00:00 2001 From: Brian Sperlongano Date: Wed, 1 Sep 2021 06:21:18 -0400 Subject: [PATCH] Add enhanced mountain features (#1202) This PR adds support for several features in the `natural` key, including `saddle`, `ridge`, `arete`, and `cliff`. These features all currently render in openstreetmap-carto, so adding these features would advance OpenMapTiles towards its goal of parity with the standard renderer, as indicated in https://github.com/openstreetmap/operations/issues/565#issuecomment-907303115. This PR also adds the features requested in #274, with the exception of valleys, which I've left out of this PR because there are different complexities to mapping valleys that should be addressed as a separate (future) PR. ### Examples of mountain features in paper maps These features are regularly found in American-style maps and thus is of interest to the openstreetmap-americana map style. Below are examples of these mountain-related features found in general purpose maps: ### Approach This PR extends the existing `mountain_peak` layer by adding other mountain features. We may want to consider renaming this layer in version 4.0 to be more inclusive of other mountain features including the potential future addition of valleys. However, the features added in this PR are associated with mountains and so their inclusion in this layer is the most appropriate location. A new `osm_mountain_linestring` mapping maps the new linear mountain features, with similar ranking logic as is used for the existing `peak`/`volcano` features. Additionally, `natural=saddle` is added to the `osm_peak_point` mapping and ranked using the formula for peaks. Since saddles will have lower elevations than peaks, important saddles will be preempted by important peaks. The new linestring features are rendered only at zoom 13-14, in order to match the zoom at which they appear in openstreetmap-carto. However, it may be appropriate in a future PR to extend the rendering of these features as generalized linestrings at lower zooms. ### Test Renderings Below is a test rendering showing aretes and peaks in Austria, just north of the Swiss border, followed by a screen shot of the [same location](https://www.openstreetmap.org/#map=14/46.8682/10.0863) in openstreetmap-carto: **OpenMapTiles, zoom 14** **openstreetmap-carto, zoom r14/v13:** --- layers/mountain_peak/etl_diagram.png | Bin 15929 -> 28347 bytes layers/mountain_peak/mapping.yaml | 29 ++++++ layers/mountain_peak/mapping_diagram.png | Bin 4848 -> 14797 bytes layers/mountain_peak/mountain_peak.sql | 33 +++++++ layers/mountain_peak/mountain_peak.yaml | 4 + .../update_mountain_linestring.sql | 86 ++++++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 layers/mountain_peak/update_mountain_linestring.sql diff --git a/layers/mountain_peak/etl_diagram.png b/layers/mountain_peak/etl_diagram.png index e9a5bd7834178ffe0f588dc589b4a4a07b0f80ab..2d74753ab5cbb75af068e7214c72cf02575c85cb 100644 GIT binary patch literal 28347 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 osm_mountain_linestring + mountain_linestring: + type: linestring + columns: + - name: osm_id + type: id + - name: geometry + type: geometry + - name: name + key: name + type: string + - name: name_en + key: name:en + type: string + - name: name_de + key: name:de + type: string + - name: tags + type: hstore_tags + - name: wikipedia + key: wikipedia + type: string + mapping: + natural: + - ridge + - cliff + - arete diff --git a/layers/mountain_peak/mapping_diagram.png b/layers/mountain_peak/mapping_diagram.png index e0c5ceb3cf123b69152c5522eeb3c1cf88574d9f..d038aa24a33251048d8f444b0f7b9738a6fb546c 100644 GIT binary patch literal 14797 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 SRtN8A633LaDNmHlul^rmaIkX# literal 4848 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 7 AND (rank <= 5 OR zoom_level >= 14) + +UNION ALL + +SELECT + -- etldoc: osm_mountain_linestring -> layer_mountain_peak:z13_ + osm_id, + geometry, + name, + name_en, + name_de, + tags->'natural' AS class, + tags, + NULL AS ele, + NULL AS ele_ft, + 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, + row_number() OVER ( + PARTITION BY LabelGrid(geometry, 100 * pixel_width) + ORDER BY ( + (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_mountain_linestring + WHERE geometry && bbox + ) AS ranked_mountain_linestring +WHERE zoom_level >= 13 ORDER BY "rank" ASC; $$ LANGUAGE SQL STABLE diff --git a/layers/mountain_peak/mountain_peak.yaml b/layers/mountain_peak/mountain_peak.yaml index f88d73e..8f1a7fe 100644 --- a/layers/mountain_peak/mountain_peak.yaml +++ b/layers/mountain_peak/mountain_peak.yaml @@ -14,6 +14,9 @@ layer: values: - peak - volcano + - ridge + - cliff + - arete ele: Elevation (`ele`) in meters. ele_ft: Elevation (`ele`) in feet. rank: Rank of the peak within one tile (starting at 1 that is the most important peak). @@ -25,6 +28,7 @@ layer: 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 + - ./update_mountain_linestring.sql - ./mountain_peak.sql datasources: - type: imposm3 diff --git a/layers/mountain_peak/update_mountain_linestring.sql b/layers/mountain_peak/update_mountain_linestring.sql new file mode 100644 index 0000000..760c274 --- /dev/null +++ b/layers/mountain_peak/update_mountain_linestring.sql @@ -0,0 +1,86 @@ +DROP TRIGGER IF EXISTS trigger_flag ON osm_mountain_linestring; +DROP TRIGGER IF EXISTS trigger_store ON osm_mountain_linestring; +DROP TRIGGER IF EXISTS trigger_refresh ON mountain_linestring.updates; + +CREATE SCHEMA IF NOT EXISTS mountain_linestring; + +CREATE TABLE IF NOT EXISTS mountain_linestring.osm_ids +( + osm_id bigint +); + +-- etldoc: osm_mountain_linestring -> osm_mountain_linestring +CREATE OR REPLACE FUNCTION update_osm_mountain_linestring(full_update boolean) RETURNS void AS +$$ + UPDATE osm_mountain_linestring + SET tags = update_tags(tags, geometry) + WHERE (full_update OR osm_id IN (SELECT osm_id FROM mountain_linestring.osm_ids)) + AND COALESCE(tags -> 'name:latin', tags -> 'name:nonlatin', tags -> 'name_int') IS NULL + AND tags != update_tags(tags, geometry) +$$ LANGUAGE SQL; + +SELECT update_osm_mountain_linestring(true); + +-- Handle updates + +CREATE OR REPLACE FUNCTION mountain_linestring.store() RETURNS trigger AS +$$ +BEGIN + IF (tg_op = 'DELETE') THEN + INSERT INTO mountain_linestring.osm_ids VALUES (OLD.osm_id); + ELSE + INSERT INTO mountain_linestring.osm_ids VALUES (NEW.osm_id); + END IF; + RETURN NULL; +END; +$$ LANGUAGE plpgsql; + +CREATE TABLE IF NOT EXISTS mountain_linestring.updates +( + id serial PRIMARY KEY, + t text, + UNIQUE (t) +); +CREATE OR REPLACE FUNCTION mountain_linestring.flag() RETURNS trigger AS +$$ +BEGIN + INSERT INTO mountain_linestring.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING; + RETURN NULL; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION mountain_linestring.refresh() RETURNS trigger AS +$$ +DECLARE + t TIMESTAMP WITH TIME ZONE := clock_timestamp(); +BEGIN + RAISE LOG 'Refresh mountain_linestring'; + PERFORM update_osm_mountain_linestring(false); + -- noinspection SqlWithoutWhere + DELETE FROM mountain_linestring.osm_ids; + -- noinspection SqlWithoutWhere + DELETE FROM mountain_linestring.updates; + + RAISE LOG 'Refresh mountain_linestring done in %', age(clock_timestamp(), t); + RETURN NULL; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trigger_store + AFTER INSERT OR UPDATE OR DELETE + ON osm_mountain_linestring + FOR EACH ROW +EXECUTE PROCEDURE mountain_linestring.store(); + +CREATE TRIGGER trigger_flag + AFTER INSERT OR UPDATE OR DELETE + ON osm_mountain_linestring + FOR EACH STATEMENT +EXECUTE PROCEDURE mountain_linestring.flag(); + +CREATE CONSTRAINT TRIGGER trigger_refresh + AFTER INSERT + ON mountain_linestring.updates + INITIALLY DEFERRED + FOR EACH ROW +EXECUTE PROCEDURE mountain_linestring.refresh();