Stitch transportation_name by all language tags (#989)
When OSM roads in the `transportation_name` layer are stitched together, their grouping does not consider all `name:*` tags.
As a result, roads with different `name:*` tags may be stitched together.
The `waterway` layer performs the grouping properly, for the same purpose:
1685eaccbd/layers/waterway/update_important_waterway.sql (L34)
Co-authored-by: Frédéric Rodrigo <fred.rodrigo@gmail.com>
This commit is contained in:
parent
5c640daf4f
commit
45f5b53c9c
@ -23,11 +23,11 @@ AS
|
|||||||
$$
|
$$
|
||||||
SELECT osm_id,
|
SELECT osm_id,
|
||||||
geometry,
|
geometry,
|
||||||
NULLIF(name, '') AS name,
|
name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(name_en, name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(name_de, name, name_en) AS name_de,
|
||||||
tags,
|
tags,
|
||||||
NULLIF(ref, ''),
|
ref,
|
||||||
NULLIF(LENGTH(ref), 0) AS ref_length,
|
NULLIF(LENGTH(ref), 0) AS ref_length,
|
||||||
--TODO: The road network of the road is not yet implemented
|
--TODO: The road network of the road is not yet implemented
|
||||||
CASE
|
CASE
|
||||||
@ -101,7 +101,7 @@ FROM (
|
|||||||
indoor
|
indoor
|
||||||
FROM osm_transportation_name_linestring
|
FROM osm_transportation_name_linestring
|
||||||
WHERE zoom_level = 12
|
WHERE zoom_level = 12
|
||||||
AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry)
|
AND LineLabel(zoom_level, COALESCE(name, ref), geometry)
|
||||||
AND highway_class(highway, '', construction) NOT IN ('minor', 'track', 'path')
|
AND highway_class(highway, '', construction) NOT IN ('minor', 'track', 'path')
|
||||||
AND NOT highway_is_link(highway)
|
AND NOT highway_is_link(highway)
|
||||||
UNION ALL
|
UNION ALL
|
||||||
@ -123,7 +123,7 @@ FROM (
|
|||||||
indoor
|
indoor
|
||||||
FROM osm_transportation_name_linestring
|
FROM osm_transportation_name_linestring
|
||||||
WHERE zoom_level = 13
|
WHERE zoom_level = 13
|
||||||
AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry)
|
AND LineLabel(zoom_level, COALESCE(name, ref), geometry)
|
||||||
AND highway_class(highway, '', construction) NOT IN ('track', 'path')
|
AND highway_class(highway, '', construction) NOT IN ('track', 'path')
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|
||||||
|
|||||||
@ -25,15 +25,15 @@ SELECT
|
|||||||
FROM (
|
FROM (
|
||||||
SELECT hl.geometry,
|
SELECT hl.geometry,
|
||||||
hl.osm_id,
|
hl.osm_id,
|
||||||
CASE WHEN length(hl.name) > 15 THEN osml10n_street_abbrev_all(hl.name) ELSE hl.name END AS "name",
|
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 hl.name_en END AS "name_en",
|
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 hl.name_de END AS "name_de",
|
CASE WHEN length(hl.name_de) > 15 THEN osml10n_street_abbrev_de(hl.name_de) ELSE NULLIF(hl.name_de, '') END AS "name_de",
|
||||||
hl.tags,
|
slice_language_tags(hl.tags) AS tags,
|
||||||
rm.network_type,
|
rm.network_type,
|
||||||
CASE
|
CASE
|
||||||
WHEN rm.network_type IS NOT NULL AND nullif(rm.ref::text, '') IS NOT NULL
|
WHEN rm.network_type IS NOT NULL AND nullif(rm.ref::text, '') IS NOT NULL
|
||||||
THEN rm.ref::text
|
THEN rm.ref::text
|
||||||
ELSE hl.ref
|
ELSE NULLIF(hl.ref, '')
|
||||||
END AS ref,
|
END AS ref,
|
||||||
hl.highway,
|
hl.highway,
|
||||||
hl.construction,
|
hl.construction,
|
||||||
@ -76,9 +76,8 @@ FROM (
|
|||||||
name,
|
name,
|
||||||
name_en,
|
name_en,
|
||||||
name_de,
|
name_de,
|
||||||
hstore(string_agg(nullif(slice_language_tags(tags ||
|
tags || hstore( -- store results of osml10n_street_abbrev_* above
|
||||||
hstore(ARRAY ['name', name, 'name:en', name_en, 'name:de', name_de]))::text,
|
ARRAY ['name', name, 'name:en', name_en, 'name:de', name_de]) AS tags,
|
||||||
''), ',')) AS "tags",
|
|
||||||
ref,
|
ref,
|
||||||
highway,
|
highway,
|
||||||
construction,
|
construction,
|
||||||
@ -88,7 +87,7 @@ FROM (
|
|||||||
network_type,
|
network_type,
|
||||||
min(z_order) AS z_order
|
min(z_order) AS z_order
|
||||||
FROM osm_transportation_name_network
|
FROM osm_transportation_name_network
|
||||||
GROUP BY name, name_en, name_de, ref, highway, construction, "level", layer, indoor, network_type
|
GROUP BY name, name_en, name_de, tags, ref, highway, construction, "level", layer, indoor, network_type
|
||||||
) AS highway_union
|
) AS highway_union
|
||||||
) /* DELAY_MATERIALIZED_VIEW_CREATION */;
|
) /* DELAY_MATERIALIZED_VIEW_CREATION */;
|
||||||
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_geometry_idx ON osm_transportation_name_linestring USING gist (geometry);
|
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_geometry_idx ON osm_transportation_name_linestring USING gist (geometry);
|
||||||
@ -253,15 +252,15 @@ BEGIN
|
|||||||
INSERT INTO osm_transportation_name_network
|
INSERT INTO osm_transportation_name_network
|
||||||
SELECT hl.geometry,
|
SELECT hl.geometry,
|
||||||
hl.osm_id,
|
hl.osm_id,
|
||||||
CASE WHEN length(hl.name) > 15 THEN osml10n_street_abbrev_all(hl.name) ELSE hl.name END AS "name",
|
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 hl.name_en END AS "name_en",
|
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 hl.name_de END AS "name_de",
|
CASE WHEN length(hl.name_de) > 15 THEN osml10n_street_abbrev_de(hl.name_de) ELSE NULLIF(hl.name_de, '') END AS "name_de",
|
||||||
hl.tags,
|
slice_language_tags(hl.tags) AS tags,
|
||||||
rm.network_type,
|
rm.network_type,
|
||||||
CASE
|
CASE
|
||||||
WHEN rm.network_type IS NOT NULL AND nullif(rm.ref::text, '') IS NOT NULL
|
WHEN rm.network_type IS NOT NULL AND NULLIF(rm.ref::text, '') IS NOT NULL
|
||||||
THEN rm.ref::text
|
THEN rm.ref::text
|
||||||
ELSE hl.ref
|
ELSE NULLIF(hl.ref, '')
|
||||||
END AS ref,
|
END AS ref,
|
||||||
hl.highway,
|
hl.highway,
|
||||||
hl.construction,
|
hl.construction,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user