Implement shipway labels (#1179)

Fixes #403 

This PR adds labels to shipway linestrings in the `transportation_name` level, up through zoom 12.

![image](https://user-images.githubusercontent.com/3254090/129659827-662ee13c-27f3-4e62-a7f4-45dbd535b770.png)
pull/1184/head^2
Brian Sperlongano 2021-08-23 04:52:15 -04:00 zatwierdzone przez GitHub
rodzic 6ef138635d
commit a93b708327
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 28 dodań i 2 usunięć

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 258 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 287 KiB

Wyświetl plik

@ -110,7 +110,7 @@ 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')
AND (highway_class(highway, '', subclass) NOT IN ('minor', 'track', 'path') OR highway='shipway')
AND NOT highway_is_link(highway)
UNION ALL
@ -133,7 +133,7 @@ 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')
AND (highway_class(highway, '', subclass) NOT IN ('track', 'path') OR highway='shipway')
UNION ALL
-- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z14_

Wyświetl plik

@ -66,6 +66,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_network_geometry_idx ON osm_t
-- 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
SELECT (ST_Dump(geometry)).geom AS geometry,
name,
@ -105,6 +106,31 @@ FROM (
WHERE name <> '' OR ref <> ''
GROUP BY name, name_en, name_de, tags, ref, highway, subclass, "level", layer, indoor, network_type,
route_1, route_2, route_3, route_4, route_5, route_6
UNION ALL
SELECT ST_LineMerge(ST_Collect(geometry)) AS geometry,
CASE WHEN length(name) > 15 THEN osml10n_street_abbrev_all(name) ELSE NULLIF(name, '') END AS "name",
CASE WHEN length(name_en) > 15 THEN osml10n_street_abbrev_en(name_en) ELSE NULLIF(name_en, '') END AS "name_en",
CASE WHEN length(name_de) > 15 THEN osml10n_street_abbrev_de(name_de) ELSE NULLIF(name_de, '') END AS "name_de",
slice_language_tags(tags) || hstore(ARRAY ['name', name, 'name:en', name_en, 'name:de', name_de]) AS tags,
NULL AS ref,
'shipway' AS highway,
shipway AS subclass,
NULL AS brunnel,
NULL::int AS level,
layer,
NULL AS indoor,
NULL AS network_type,
NULL AS route_1,
NULL AS route_2,
NULL AS route_3,
NULL AS route_4,
NULL AS route_5,
NULL AS route_6,
min(z_order) AS z_order
FROM osm_shipway_linestring
WHERE name <> ''
GROUP BY name, name_en, name_de, tags, subclass, "level", layer
) AS highway_union
;
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_name_ref_idx ON osm_transportation_name_linestring (coalesce(name, ''), coalesce(ref, ''));