diff --git a/layers/transportation/etl_diagram.png b/layers/transportation/etl_diagram.png
index edf882e0..c5940322 100644
Binary files a/layers/transportation/etl_diagram.png and b/layers/transportation/etl_diagram.png differ
diff --git a/layers/transportation/mapping.yaml b/layers/transportation/mapping.yaml
index 442a0701..ee4e92d7 100644
--- a/layers/transportation/mapping.yaml
+++ b/layers/transportation/mapping.yaml
@@ -151,6 +151,10 @@ mtb_scale_field: &mtb_scale
key: mtb:scale
name: mtb_scale
type: string
+sac_scale_field: &sac_scale
+ key: sac_scale
+ name: sac_scale
+ type: string
surface_field: &surface
key: surface
name: surface
@@ -200,6 +204,7 @@ tables:
- *foot
- *horse
- *mtb_scale
+ - *sac_scale
- *surface
mapping:
highway:
@@ -425,6 +430,13 @@ tables:
- *ref
- *network
- *name
+ - name: osmc_symbol
+ key: osmc:symbol
+ type: string
+ - name: colour
+ key: colour
+ type: string
mapping:
route:
- road
+ - hiking
diff --git a/layers/transportation/mapping_diagram.png b/layers/transportation/mapping_diagram.png
index acd01b84..6b2a536d 100644
Binary files a/layers/transportation/mapping_diagram.png and b/layers/transportation/mapping_diagram.png differ
diff --git a/layers/transportation/transportation.sql b/layers/transportation/transportation.sql
index cb512e17..59b8243d 100644
--- a/layers/transportation/transportation.sql
+++ b/layers/transportation/transportation.sql
@@ -329,9 +329,12 @@ FROM (
-- etldoc: osm_highway_linestring -> layer_transportation:z12
-- etldoc: osm_highway_linestring -> layer_transportation:z13
-- etldoc: osm_highway_linestring -> layer_transportation:z14_
- SELECT osm_id,
- geometry,
- highway,
+ -- etldoc: osm_transportation_name_network -> layer_transportation:z12
+ -- etldoc: osm_transportation_name_network -> layer_transportation:z13
+ -- etldoc: osm_transportation_name_network -> layer_transportation:z14_
+ SELECT hl.osm_id,
+ hl.geometry,
+ hl.highway,
construction,
network,
NULL AS railway,
@@ -347,25 +350,34 @@ FROM (
is_ramp,
is_oneway,
man_made,
- layer,
- CASE WHEN highway IN ('footway', 'steps') THEN "level" END AS "level",
- CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor,
+ hl.layer,
+ CASE WHEN hl.highway IN ('footway', 'steps') THEN hl.level END AS level,
+ CASE WHEN hl.highway IN ('footway', 'steps') THEN hl.indoor END AS indoor,
bicycle,
foot,
horse,
mtb_scale,
surface_value(surface) AS "surface",
- z_order
- FROM osm_highway_linestring
+ hl.z_order
+ FROM osm_highway_linestring hl
+ LEFT OUTER JOIN osm_transportation_name_network n ON hl.osm_id = n.osm_id
WHERE NOT is_area
AND
- CASE WHEN zoom_level = 12 THEN transportation_filter_z12(highway, construction)
+ CASE WHEN zoom_level = 12 THEN
+ CASE WHEN transportation_filter_z12(hl.highway, hl.construction) THEN TRUE
+ WHEN n.route_rank = 1 THEN TRUE
+ END
WHEN zoom_level = 13 THEN
- CASE WHEN man_made='pier' THEN NOT ST_IsClosed(geometry)
- ELSE transportation_filter_z13(highway, public_transport, construction, service)
+ CASE WHEN man_made='pier' THEN NOT ST_IsClosed(hl.geometry)
+ WHEN hl.highway = 'path' THEN (
+ hl.name <> ''
+ OR n.route_rank BETWEEN 1 AND 2
+ OR hl.sac_scale <> ''
+ )
+ ELSE transportation_filter_z13(hl.highway, public_transport, hl.construction, service)
END
WHEN zoom_level >= 14 THEN
- CASE WHEN man_made='pier' THEN NOT ST_IsClosed(geometry)
+ CASE WHEN man_made='pier' THEN NOT ST_IsClosed(hl.geometry)
ELSE TRUE
END
END
diff --git a/layers/transportation/update_route_member.sql b/layers/transportation/update_route_member.sql
index 96c0f2bc..a149dcbe 100644
--- a/layers/transportation/update_route_member.sql
+++ b/layers/transportation/update_route_member.sql
@@ -60,17 +60,22 @@ BEGIN
JOIN transportation_name.network_changes AS c ON
r.osm_id = c.osm_id;
- INSERT INTO osm_route_member (id, osm_id, network_type, concurrency_index)
+ INSERT INTO osm_route_member (id, osm_id, network_type, concurrency_index, rank)
SELECT
id,
osm_id,
osm_route_member_network_type(network) AS network_type,
- DENSE_RANK() over (PARTITION BY member ORDER BY network_type, network, LENGTH(ref), ref) AS concurrency_index
+ DENSE_RANK() over (PARTITION BY member ORDER BY network_type, network, LENGTH(ref), ref) AS concurrency_index,
+ CASE
+ WHEN network IN ('iwn', 'nwn', 'rwn') THEN 1
+ WHEN network = 'lwn' THEN 2
+ WHEN osmc_symbol || colour <> '' THEN 2
+ END AS rank
FROM osm_route_member rm
WHERE rm.member IN
(SELECT DISTINCT osm_id FROM transportation_name.network_changes)
- ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index;
-
+ ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index,
+ rank = EXCLUDED.rank;
END;
$$ LANGUAGE plpgsql;
@@ -84,16 +89,22 @@ CREATE INDEX IF NOT EXISTS osm_route_member_network_type_idx ON osm_route_member
CREATE INDEX IF NOT EXISTS osm_highway_linestring_osm_id_idx ON osm_highway_linestring ("osm_id");
CREATE INDEX IF NOT EXISTS osm_highway_linestring_gen_z11_osm_id_idx ON osm_highway_linestring_gen_z11 ("osm_id");
-ALTER TABLE osm_route_member ADD COLUMN IF NOT EXISTS concurrency_index int;
+ALTER TABLE osm_route_member ADD COLUMN IF NOT EXISTS concurrency_index int,
+ ADD COLUMN IF NOT EXISTS rank int;
-- One-time load of concurrency indexes; updates occur via trigger
-INSERT INTO osm_route_member (id, osm_id, concurrency_index)
+INSERT INTO osm_route_member (id, osm_id, concurrency_index, rank)
SELECT
id,
osm_id,
- DENSE_RANK() over (PARTITION BY member ORDER BY network_type, network, LENGTH(ref), ref) AS concurrency_index
+ DENSE_RANK() over (PARTITION BY member ORDER BY network_type, network, LENGTH(ref), ref) AS concurrency_index,
+ CASE
+ WHEN network IN ('iwn', 'nwn', 'rwn') THEN 1
+ WHEN network = 'lwn' THEN 2
+ WHEN osmc_symbol || colour <> '' THEN 2
+ END AS rank
FROM osm_route_member
- ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index;
+ ON CONFLICT (id, osm_id) DO UPDATE SET concurrency_index = EXCLUDED.concurrency_index, rank = EXCLUDED.rank;
UPDATE osm_highway_linestring hl
SET network = rm.network_type
diff --git a/layers/transportation/update_transportation_merge.sql b/layers/transportation/update_transportation_merge.sql
index 765e2955..cb186297 100644
--- a/layers/transportation/update_transportation_merge.sql
+++ b/layers/transportation/update_transportation_merge.sql
@@ -6,6 +6,70 @@ DROP TRIGGER IF EXISTS trigger_refresh ON transportation.updates;
-- to allow for nice label rendering
-- Because this works well for roads that do not have relations as well
+-- etldoc: osm_highway_linestring -> osm_transportation_name_network
+-- etldoc: osm_route_member -> osm_transportation_name_network
+CREATE TABLE IF NOT EXISTS osm_transportation_name_network AS
+SELECT
+ geometry,
+ osm_id,
+ name,
+ name_en,
+ name_de,
+ tags,
+ ref,
+ highway,
+ subclass,
+ brunnel,
+ "level",
+ sac_scale,
+ layer,
+ indoor,
+ network_type,
+ route_1, route_2, route_3, route_4, route_5, route_6,
+ z_order,
+ route_rank
+FROM (
+ SELECT DISTINCT ON (hl.osm_id)
+ hl.geometry,
+ hl.osm_id,
+ CASE WHEN length(hl.name) > 15 THEN osml10n_street_abbrev_all(hl.name) ELSE NULLIF(hl.name, '') END AS "name",
+ CASE WHEN length(hl.name_en) > 15 THEN osml10n_street_abbrev_en(hl.name_en) ELSE NULLIF(hl.name_en, '') END AS "name_en",
+ CASE WHEN length(hl.name_de) > 15 THEN osml10n_street_abbrev_de(hl.name_de) ELSE NULLIF(hl.name_de, '') END AS "name_de",
+ slice_language_tags(hl.tags) AS tags,
+ rm1.network_type,
+ CASE
+ WHEN rm1.network_type IS NOT NULL AND rm1.ref::text <> ''
+ THEN rm1.ref::text
+ ELSE NULLIF(hl.ref, '')
+ END AS ref,
+ hl.highway,
+ NULLIF(hl.construction, '') AS subclass,
+ brunnel(hl.is_bridge, hl.is_tunnel, hl.is_ford) AS brunnel,
+ sac_scale,
+ CASE WHEN highway IN ('footway', 'steps') THEN layer END AS layer,
+ CASE WHEN highway IN ('footway', 'steps') THEN level END AS level,
+ CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor,
+ NULLIF(rm1.network, '') || '=' || COALESCE(rm1.ref, '') AS route_1,
+ NULLIF(rm2.network, '') || '=' || COALESCE(rm2.ref, '') AS route_2,
+ NULLIF(rm3.network, '') || '=' || COALESCE(rm3.ref, '') AS route_3,
+ NULLIF(rm4.network, '') || '=' || COALESCE(rm4.ref, '') AS route_4,
+ NULLIF(rm5.network, '') || '=' || COALESCE(rm5.ref, '') AS route_5,
+ NULLIF(rm6.network, '') || '=' || COALESCE(rm6.ref, '') AS route_6,
+ hl.z_order,
+ LEAST(rm1.rank, rm2.rank, rm3.rank, rm4.rank, rm5.rank, rm6.rank) AS route_rank
+ FROM osm_highway_linestring hl
+ LEFT OUTER JOIN osm_route_member rm1 ON rm1.member = hl.osm_id AND rm1.concurrency_index=1
+ LEFT OUTER JOIN osm_route_member rm2 ON rm2.member = hl.osm_id AND rm2.concurrency_index=2
+ LEFT OUTER JOIN osm_route_member rm3 ON rm3.member = hl.osm_id AND rm3.concurrency_index=3
+ LEFT OUTER JOIN osm_route_member rm4 ON rm4.member = hl.osm_id AND rm4.concurrency_index=4
+ LEFT OUTER JOIN osm_route_member rm5 ON rm5.member = hl.osm_id AND rm5.concurrency_index=5
+ LEFT OUTER JOIN osm_route_member rm6 ON rm6.member = hl.osm_id AND rm6.concurrency_index=6
+ WHERE (hl.name <> '' OR hl.ref <> '' OR rm1.ref <> '' OR rm1.network <> '')
+ AND hl.highway <> ''
+) AS t;
+CREATE UNIQUE INDEX IF NOT EXISTS osm_transportation_name_network_osm_id_idx ON osm_transportation_name_network (osm_id);
+CREATE INDEX IF NOT EXISTS osm_transportation_name_network_name_ref_idx ON osm_transportation_name_network (coalesce(name, ''), coalesce(ref, ''));
+CREATE INDEX IF NOT EXISTS osm_transportation_name_network_geometry_idx ON osm_transportation_name_network USING gist (geometry);
-- Improve performance of the sql in transportation/update_route_member.sql
CREATE INDEX IF NOT EXISTS osm_highway_linestring_highway_partial_idx
@@ -29,6 +93,7 @@ SELECT (ST_Dump(ST_LineMerge(ST_Collect(geometry)))).geom AS geometry,
foot,
horse,
mtb_scale,
+ sac_scale,
CASE
WHEN access IN ('private', 'no') THEN 'no'
ELSE NULL::text END AS access,
@@ -36,7 +101,7 @@ SELECT (ST_Dump(ST_LineMerge(ST_Collect(geometry)))).geom AS geometry,
layer
FROM osm_highway_linestring_gen_z11
-- mapping.yaml pre-filter: motorway/trunk/primary/secondary/tertiary, with _link variants, construction, ST_IsValid()
-GROUP BY highway, network, construction, is_bridge, is_tunnel, is_ford, bicycle, foot, horse, mtb_scale, access, toll, layer
+GROUP BY highway, network, construction, is_bridge, is_tunnel, is_ford, bicycle, foot, horse, mtb_scale, sac_scale, access, toll, layer
) /* DELAY_MATERIALIZED_VIEW_CREATION */;
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen_z11_geometry_idx
ON osm_transportation_merge_linestring_gen_z11 USING gist (geometry);
@@ -57,6 +122,7 @@ SELECT ST_Simplify(geometry, ZRes(12)) AS geometry,
foot,
horse,
mtb_scale,
+ sac_scale,
access,
toll,
layer
@@ -83,6 +149,7 @@ SELECT ST_Simplify(geometry, ZRes(11)) AS geometry,
foot,
horse,
mtb_scale,
+ sac_scale,
access,
toll,
layer
diff --git a/layers/transportation_name/etl_diagram.png b/layers/transportation_name/etl_diagram.png
index 1d32a7af..db2381c1 100644
Binary files a/layers/transportation_name/etl_diagram.png and b/layers/transportation_name/etl_diagram.png differ
diff --git a/layers/transportation_name/mapping_diagram.png b/layers/transportation_name/mapping_diagram.png
index acd01b84..6b2a536d 100644
Binary files a/layers/transportation_name/mapping_diagram.png and b/layers/transportation_name/mapping_diagram.png differ
diff --git a/layers/transportation_name/transportation_name.sql b/layers/transportation_name/transportation_name.sql
index 670f85e6..467a9aef 100644
--- a/layers/transportation_name/transportation_name.sql
+++ b/layers/transportation_name/transportation_name.sql
@@ -110,8 +110,12 @@ FROM (
FROM osm_transportation_name_linestring
WHERE zoom_level = 12
AND LineLabel(zoom_level, COALESCE(name, ref), geometry)
- AND (highway_class(highway, '', subclass) NOT IN ('minor', 'track', 'path') OR highway='shipway')
AND NOT highway_is_link(highway)
+ AND
+ CASE WHEN highway_class(highway, NULL::text, NULL::text) NOT IN ('path', 'minor') THEN TRUE
+ WHEN highway IN ('unclassified', 'residential', 'shipway') THEN TRUE
+ WHEN route_rank = 1 THEN TRUE END
+
UNION ALL
-- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z13
@@ -133,7 +137,16 @@ FROM (
FROM osm_transportation_name_linestring
WHERE zoom_level = 13
AND LineLabel(zoom_level, COALESCE(name, ref), geometry)
- AND (highway_class(highway, '', subclass) NOT IN ('track', 'path') OR highway='shipway')
+ AND
+ CASE WHEN highway <> 'path' THEN TRUE
+ WHEN highway = 'path' AND (
+ name <> ''
+ OR network IS NOT NULL
+ OR sac_scale <> ''
+ OR route_rank <= 2
+ ) THEN TRUE
+ END
+
UNION ALL
-- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z14_
diff --git a/layers/transportation_name/update_transportation_name.sql b/layers/transportation_name/update_transportation_name.sql
index f9d50b66..feec6f6f 100644
--- a/layers/transportation_name/update_transportation_name.sql
+++ b/layers/transportation_name/update_transportation_name.sql
@@ -3,69 +3,6 @@
-- to allow for nice label rendering
-- Because this works well for roads that do not have relations as well
-
--- etldoc: osm_highway_linestring -> osm_transportation_name_network
--- etldoc: osm_route_member -> osm_transportation_name_network
-CREATE TABLE IF NOT EXISTS osm_transportation_name_network AS
-SELECT
- geometry,
- osm_id,
- name,
- name_en,
- name_de,
- tags,
- ref,
- highway,
- subclass,
- brunnel,
- "level",
- layer,
- indoor,
- network_type,
- route_1, route_2, route_3, route_4, route_5, route_6,
- z_order
-FROM (
- SELECT DISTINCT ON (hl.osm_id)
- hl.geometry,
- hl.osm_id,
- CASE WHEN length(hl.name) > 15 THEN osml10n_street_abbrev_all(hl.name) ELSE NULLIF(hl.name, '') END AS "name",
- CASE WHEN length(hl.name_en) > 15 THEN osml10n_street_abbrev_en(hl.name_en) ELSE NULLIF(hl.name_en, '') END AS "name_en",
- CASE WHEN length(hl.name_de) > 15 THEN osml10n_street_abbrev_de(hl.name_de) ELSE NULLIF(hl.name_de, '') END AS "name_de",
- slice_language_tags(hl.tags) AS tags,
- rm1.network_type,
- CASE
- WHEN rm1.network_type IS NOT NULL AND rm1.ref::text <> ''
- THEN rm1.ref::text
- ELSE NULLIF(hl.ref, '')
- END AS ref,
- hl.highway,
- NULLIF(hl.construction, '') AS subclass,
- brunnel(hl.is_bridge, hl.is_tunnel, hl.is_ford) AS brunnel,
- CASE WHEN highway IN ('footway', 'steps') THEN layer END AS layer,
- CASE WHEN highway IN ('footway', 'steps') THEN level END AS level,
- CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor,
- NULLIF(rm1.network, '') || '=' || COALESCE(rm1.ref, '') AS route_1,
- NULLIF(rm2.network, '') || '=' || COALESCE(rm2.ref, '') AS route_2,
- NULLIF(rm3.network, '') || '=' || COALESCE(rm3.ref, '') AS route_3,
- NULLIF(rm4.network, '') || '=' || COALESCE(rm4.ref, '') AS route_4,
- NULLIF(rm5.network, '') || '=' || COALESCE(rm5.ref, '') AS route_5,
- NULLIF(rm6.network, '') || '=' || COALESCE(rm6.ref, '') AS route_6,
- hl.z_order
- FROM osm_highway_linestring hl
- LEFT OUTER JOIN osm_route_member rm1 ON rm1.member = hl.osm_id AND rm1.concurrency_index=1
- LEFT OUTER JOIN osm_route_member rm2 ON rm2.member = hl.osm_id AND rm2.concurrency_index=2
- LEFT OUTER JOIN osm_route_member rm3 ON rm3.member = hl.osm_id AND rm3.concurrency_index=3
- LEFT OUTER JOIN osm_route_member rm4 ON rm4.member = hl.osm_id AND rm4.concurrency_index=4
- LEFT OUTER JOIN osm_route_member rm5 ON rm5.member = hl.osm_id AND rm5.concurrency_index=5
- LEFT OUTER JOIN osm_route_member rm6 ON rm6.member = hl.osm_id AND rm6.concurrency_index=6
- WHERE (hl.name <> '' OR hl.ref <> '' OR rm1.ref <> '' OR rm1.network <> '')
- AND hl.highway <> ''
-) AS t;
-CREATE INDEX IF NOT EXISTS osm_transportation_name_network_osm_id_idx ON osm_transportation_name_network (osm_id);
-CREATE INDEX IF NOT EXISTS osm_transportation_name_network_name_ref_idx ON osm_transportation_name_network (coalesce(name, ''), coalesce(ref, ''));
-CREATE INDEX IF NOT EXISTS osm_transportation_name_network_geometry_idx ON osm_transportation_name_network USING gist (geometry);
-
-
-- etldoc: osm_transportation_name_network -> osm_transportation_name_linestring
-- etldoc: osm_shipway_linestring -> osm_transportation_name_linestring
CREATE TABLE IF NOT EXISTS osm_transportation_name_linestring AS
@@ -78,12 +15,14 @@ SELECT (ST_Dump(geometry)).geom AS geometry,
highway,
subclass,
brunnel,
+ sac_scale,
"level",
layer,
indoor,
network_type AS network,
route_1, route_2, route_3, route_4, route_5, route_6,
- z_order
+ z_order,
+ route_rank
FROM (
SELECT ST_LineMerge(ST_Collect(geometry)) AS geometry,
name,
@@ -97,15 +36,17 @@ FROM (
CASE WHEN COUNT(*) = COUNT(brunnel) AND MAX(brunnel) = MIN(brunnel)
THEN MAX(brunnel)
ELSE NULL::text END AS brunnel,
+ sac_scale,
"level",
layer,
indoor,
network_type,
route_1, route_2, route_3, route_4, route_5, route_6,
- min(z_order) AS z_order
+ min(z_order) AS z_order,
+ min(route_rank) AS route_rank
FROM osm_transportation_name_network
WHERE name <> '' OR ref <> ''
- GROUP BY name, name_en, name_de, tags, ref, highway, subclass, "level", layer, indoor, network_type,
+ GROUP BY name, name_en, name_de, tags, ref, highway, subclass, sac_scale, "level", layer, indoor, network_type,
route_1, route_2, route_3, route_4, route_5, route_6
UNION ALL
@@ -118,6 +59,7 @@ FROM (
'shipway' AS highway,
shipway AS subclass,
NULL AS brunnel,
+ NULL AS sac_scale,
NULL::int AS level,
layer,
NULL AS indoor,
@@ -128,7 +70,8 @@ FROM (
NULL AS route_4,
NULL AS route_5,
NULL AS route_6,
- min(z_order) AS z_order
+ min(z_order) AS z_order,
+ NULL::int AS route_rank
FROM osm_shipway_linestring
WHERE name <> ''
GROUP BY name, name_en, name_de, tags, subclass, "level", layer
@@ -341,11 +284,13 @@ BEGIN
subclass,
brunnel,
level,
+ sac_scale,
layer,
indoor,
network_type,
route_1, route_2, route_3, route_4, route_5, route_6,
- z_order
+ z_order,
+ route_rank
FROM (
SELECT hl.geometry,
hl.osm_id,
@@ -362,6 +307,7 @@ BEGIN
hl.highway,
NULLIF(hl.construction, '') AS subclass,
brunnel(hl.is_bridge, hl.is_tunnel, hl.is_ford) AS brunnel,
+ sac_scale,
CASE WHEN highway IN ('footway', 'steps') THEN layer END AS layer,
CASE WHEN highway IN ('footway', 'steps') THEN level END AS level,
CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor,
@@ -371,7 +317,8 @@ BEGIN
NULLIF(rm4.network, '') || '=' || COALESCE(rm4.ref, '') AS route_4,
NULLIF(rm5.network, '') || '=' || COALESCE(rm5.ref, '') AS route_5,
NULLIF(rm6.network, '') || '=' || COALESCE(rm6.ref, '') AS route_6,
- hl.z_order
+ hl.z_order,
+ LEAST(rm1.rank, rm2.rank, rm3.rank, rm4.rank, rm5.rank, rm6.rank) AS route_rank
FROM osm_highway_linestring hl
JOIN transportation_name.network_changes AS c ON
hl.osm_id = c.osm_id
@@ -383,7 +330,8 @@ BEGIN
LEFT OUTER JOIN osm_route_member rm6 ON rm6.member = hl.osm_id AND rm6.concurrency_index=6
WHERE (hl.name <> '' OR hl.ref <> '' OR rm1.ref <> '' OR rm1.network <> '')
AND hl.highway <> ''
- ) AS t;
+ ) AS t
+ ON CONFLICT DO NOTHING;
-- noinspection SqlWithoutWhere
DELETE FROM transportation_name.network_changes;
@@ -436,6 +384,7 @@ CREATE TABLE IF NOT EXISTS transportation_name.name_changes
highway character varying,
subclass character varying,
brunnel character varying,
+ sac_scale character varying,
level integer,
layer integer,
indoor boolean,
@@ -498,7 +447,7 @@ BEGIN
-- Compact the change history to keep only the first and last version, and then uniq version of row
CREATE TEMP TABLE name_changes_compact AS
- SELECT DISTINCT ON (name, name_en, name_de, tags, ref, highway, subclass, brunnel, level, layer, indoor, network_type,
+ SELECT DISTINCT ON (name, name_en, name_de, tags, ref, highway, subclass, brunnel, sac_scale, level, layer, indoor, network_type,
route_1, route_2, route_3, route_4, route_5, route_6)
name,
name_en,
@@ -508,6 +457,7 @@ BEGIN
highway,
subclass,
brunnel,
+ sac_scale,
level,
layer,
indoor,
@@ -541,6 +491,7 @@ BEGIN
AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
+ AND n.sac_scale IS NOT DISTINCT FROM c.sac_scale
AND n.level IS NOT DISTINCT FROM c.level
AND n.layer IS NOT DISTINCT FROM c.layer
AND n.indoor IS NOT DISTINCT FROM c.indoor
@@ -562,6 +513,7 @@ BEGIN
highway,
subclass,
brunnel,
+ sac_scale,
level,
layer,
indoor,
@@ -580,6 +532,7 @@ BEGIN
n.highway,
n.subclass,
n.brunnel,
+ n.sac_scale,
n.level,
n.layer,
n.indoor,
@@ -596,6 +549,7 @@ BEGIN
AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
+ AND n.sac_scale IS NOT DISTINCT FROM c.sac_scale
AND n.level IS NOT DISTINCT FROM c.level
AND n.layer IS NOT DISTINCT FROM c.layer
AND n.indoor IS NOT DISTINCT FROM c.indoor
@@ -606,7 +560,7 @@ BEGIN
AND n.route_4 IS NOT DISTINCT FROM c.route_4
AND n.route_5 IS NOT DISTINCT FROM c.route_5
AND n.route_6 IS NOT DISTINCT FROM c.route_6
- GROUP BY n.name, n.name_en, n.name_de, n.tags, n.ref, n.highway, n.subclass, n.brunnel, n.level, n.layer, n.indoor, n.network_type,
+ GROUP BY n.name, n.name_en, n.name_de, n.tags, n.ref, n.highway, n.subclass, n.brunnel, n.sac_scale, n.level, n.layer, n.indoor, n.network_type,
n.route_1, n.route_2, n.route_3, n.route_4, n.route_5, n.route_6
) AS highway_union;
diff --git a/tests/import/500_import-highway.osm b/tests/import/500_import-highway.osm
index 0b3a36b6..e2944f3b 100644
--- a/tests/import/500_import-highway.osm
+++ b/tests/import/500_import-highway.osm
@@ -14,6 +14,10 @@
+
+
+
+
@@ -65,4 +69,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test-post-import.sql b/tests/test-post-import.sql
index dda29265..f43fe664 100644
--- a/tests/test-post-import.sql
+++ b/tests/test-post-import.sql
@@ -133,6 +133,20 @@ BEGIN
INSERT INTO omt_test_failures VALUES(500, 'import', 'osm_transportation_linestring z9 import tags expected 1, got ' || cnt);
END IF;
+ SELECT COUNT(*) INTO cnt FROM osm_transportation_name_linestring
+ WHERE tags->'name' = 'OpenMapTiles Path z13'
+ AND route_rank = 2;
+ IF cnt <> 1 THEN
+ INSERT INTO omt_test_failures VALUES(500, 'import', 'osm_transportation_name_linestring z13 route_rank expected 1, got ' || cnt);
+ END IF;
+
+ SELECT COUNT(*) INTO cnt FROM osm_transportation_name_linestring
+ WHERE tags->'name' = 'OpenMapTiles Track z12'
+ AND route_rank = 1;
+ IF cnt <> 1 THEN
+ INSERT INTO omt_test_failures VALUES(500, 'import', 'osm_transportation_name_linestring z12 route_rank expected 1, got ' || cnt);
+ END IF;
+
END;
$$