kopia lustrzana https://github.com/openmaptiles/openmaptiles
Brunnel changes in transportation and transportation_name layers (#1027)
https://github.com/openmaptiles/openmaptiles/issues/999 - Point 1 solved only partially - there is `brunnel` value added into zooms 9, 10, 11. For zooms 8 and smaller it would need change in osm_transportation_merge_ tables - I am going to try it but maybe its SQL costs will be to high. - Point 2 solved.pull/1013/head
rodzic
b7429ce6f5
commit
341c4df171
|
@ -220,9 +220,9 @@ FROM (
|
|||
NULL AS shipway,
|
||||
NULL AS public_transport,
|
||||
NULL AS service,
|
||||
NULL::boolean AS is_bridge,
|
||||
NULL::boolean AS is_tunnel,
|
||||
NULL::boolean AS is_ford,
|
||||
is_bridge,
|
||||
is_tunnel,
|
||||
is_ford,
|
||||
NULL::boolean AS is_ramp,
|
||||
NULL::int AS is_oneway,
|
||||
NULL AS man_made,
|
||||
|
@ -250,9 +250,9 @@ FROM (
|
|||
NULL AS shipway,
|
||||
NULL AS public_transport,
|
||||
NULL AS service,
|
||||
NULL::boolean AS is_bridge,
|
||||
NULL::boolean AS is_tunnel,
|
||||
NULL::boolean AS is_ford,
|
||||
is_bridge,
|
||||
is_tunnel,
|
||||
is_ford,
|
||||
NULL::boolean AS is_ramp,
|
||||
NULL::int AS is_oneway,
|
||||
NULL AS man_made,
|
||||
|
|
|
@ -15,6 +15,7 @@ CREATE OR REPLACE FUNCTION layer_transportation_name(bbox geometry, zoom_level i
|
|||
network text,
|
||||
class text,
|
||||
subclass text,
|
||||
brunnel text,
|
||||
layer int,
|
||||
level int,
|
||||
indoor int
|
||||
|
@ -41,6 +42,7 @@ SELECT osm_id,
|
|||
WHEN highway IS NOT NULL AND highway_class(highway, '', construction) = 'path'
|
||||
THEN highway
|
||||
END AS subclass,
|
||||
brunnel,
|
||||
NULLIF(layer, 0) AS layer,
|
||||
"level",
|
||||
CASE WHEN indoor = TRUE THEN 1 END AS indoor
|
||||
|
@ -94,6 +96,7 @@ FROM (
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order,
|
||||
layer,
|
||||
|
@ -116,6 +119,7 @@ FROM (
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order,
|
||||
layer,
|
||||
|
@ -137,6 +141,7 @@ FROM (
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order,
|
||||
layer,
|
||||
|
|
|
@ -69,6 +69,13 @@ layer:
|
|||
- bridleway
|
||||
- corridor
|
||||
- platform
|
||||
brunnel:
|
||||
description: |
|
||||
Mark whether way is a bridge, a tunnel or a ford.
|
||||
values:
|
||||
- bridge
|
||||
- tunnel
|
||||
- ford
|
||||
level:
|
||||
description: |
|
||||
Experimental feature! Filled only for steps and footways. Original
|
||||
|
@ -86,7 +93,7 @@ layer:
|
|||
datasource:
|
||||
geometry_field: geometry
|
||||
srid: 900913
|
||||
query: (SELECT geometry, name, name_en, name_de, {name_languages}, ref, ref_length, network::text, class::text, subclass, layer, level, indoor FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
|
||||
query: (SELECT geometry, name, name_en, name_de, {name_languages}, ref, ref_length, network::text, class::text, subclass, brunnel, layer, level, indoor FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
|
||||
schema:
|
||||
- ./network_type.sql
|
||||
- ./update_route_member.sql
|
||||
|
|
|
@ -17,6 +17,7 @@ SELECT
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
"level",
|
||||
layer,
|
||||
indoor,
|
||||
|
@ -37,6 +38,7 @@ FROM (
|
|||
END AS ref,
|
||||
hl.highway,
|
||||
hl.construction,
|
||||
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,
|
||||
|
@ -66,6 +68,7 @@ SELECT (ST_Dump(geometry)).geom AS geometry,
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
"level",
|
||||
layer,
|
||||
indoor,
|
||||
|
@ -81,13 +84,14 @@ FROM (
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
"level",
|
||||
layer,
|
||||
indoor,
|
||||
network_type,
|
||||
min(z_order) AS z_order
|
||||
FROM osm_transportation_name_network
|
||||
GROUP BY name, name_en, name_de, tags, ref, highway, construction, "level", layer, indoor, network_type
|
||||
GROUP BY name, name_en, name_de, tags, ref, highway, construction, brunnel, "level", layer, indoor, network_type
|
||||
) AS highway_union
|
||||
;
|
||||
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_name_ref_idx ON osm_transportation_name_linestring (coalesce(name, ''), coalesce(ref, ''));
|
||||
|
@ -108,6 +112,7 @@ SELECT ST_Simplify(geometry, 50) AS geometry,
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order
|
||||
FROM osm_transportation_name_linestring
|
||||
|
@ -135,6 +140,7 @@ SELECT ST_Simplify(geometry, 120) AS geometry,
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order
|
||||
FROM osm_transportation_name_linestring_gen1
|
||||
|
@ -162,6 +168,7 @@ SELECT ST_Simplify(geometry, 200) AS geometry,
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order
|
||||
FROM osm_transportation_name_linestring_gen2
|
||||
|
@ -189,6 +196,7 @@ SELECT ST_Simplify(geometry, 500) AS geometry,
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
network,
|
||||
z_order
|
||||
FROM osm_transportation_name_linestring_gen3
|
||||
|
@ -275,6 +283,7 @@ BEGIN
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
level,
|
||||
layer,
|
||||
indoor,
|
||||
|
@ -295,6 +304,7 @@ BEGIN
|
|||
END AS ref,
|
||||
hl.highway,
|
||||
hl.construction,
|
||||
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,
|
||||
|
@ -360,6 +370,7 @@ CREATE TABLE IF NOT EXISTS transportation_name.name_changes
|
|||
ref character varying,
|
||||
highway character varying,
|
||||
construction character varying,
|
||||
brunnel character varying,
|
||||
level integer,
|
||||
layer integer,
|
||||
indoor boolean,
|
||||
|
@ -372,16 +383,16 @@ BEGIN
|
|||
IF (tg_op IN ('DELETE', 'UPDATE'))
|
||||
THEN
|
||||
INSERT INTO transportation_name.name_changes(is_old, osm_id, name, name_en, name_de, ref, highway, construction,
|
||||
level, layer, indoor, network_type)
|
||||
VALUES (TRUE, old.osm_id, old.name, old.name_en, old.name_de, old.ref, old.highway, old.construction, old.level,
|
||||
old.layer, old.indoor, old.network_type);
|
||||
brunnel, level, layer, indoor, network_type)
|
||||
VALUES (TRUE, old.osm_id, old.name, old.name_en, old.name_de, old.ref, old.highway, old.construction,
|
||||
old.brunnel, old.level, old.layer, old.indoor, old.network_type);
|
||||
END IF;
|
||||
IF (tg_op IN ('UPDATE', 'INSERT'))
|
||||
THEN
|
||||
INSERT INTO transportation_name.name_changes(is_old, osm_id, name, name_en, name_de, ref, highway, construction,
|
||||
level, layer, indoor, network_type)
|
||||
VALUES (FALSE, new.osm_id, new.name, new.name_en, new.name_de, new.ref, new.highway, new.construction, new.level,
|
||||
new.layer, new.indoor, new.network_type);
|
||||
brunnel, level, layer, indoor, network_type)
|
||||
VALUES (FALSE, new.osm_id, new.name, new.name_en, new.name_de, new.ref, new.highway, new.construction,
|
||||
new.brunnel, new.level, new.layer, new.indoor, new.network_type);
|
||||
END IF;
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
@ -412,13 +423,14 @@ 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, ref, highway, construction, level, layer, indoor, network_type)
|
||||
SELECT DISTINCT ON (name, name_en, name_de, ref, highway, construction, brunnel, level, layer, indoor, network_type)
|
||||
name,
|
||||
name_en,
|
||||
name_de,
|
||||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
level,
|
||||
layer,
|
||||
indoor,
|
||||
|
@ -449,6 +461,7 @@ BEGIN
|
|||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
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
|
||||
|
@ -464,6 +477,7 @@ BEGIN
|
|||
ref,
|
||||
highway,
|
||||
construction,
|
||||
brunnel,
|
||||
level,
|
||||
layer,
|
||||
indoor,
|
||||
|
@ -480,6 +494,7 @@ BEGIN
|
|||
n.ref,
|
||||
n.highway,
|
||||
n.construction,
|
||||
n.brunnel,
|
||||
n.level,
|
||||
n.layer,
|
||||
n.indoor,
|
||||
|
@ -493,68 +508,125 @@ BEGIN
|
|||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
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
|
||||
AND n.network_type IS NOT DISTINCT FROM c.network_type
|
||||
GROUP BY n.name, n.name_en, n.name_de, n.ref, n.highway, n.construction, n.level, n.layer, n.indoor, n.network_type
|
||||
GROUP BY n.name, n.name_en, n.name_de, n.ref, n.highway, n.construction, n.brunnel, n.level, n.layer, n.indoor, n.network_type
|
||||
) AS highway_union;
|
||||
|
||||
-- REFRESH osm_transportation_name_linestring_gen1
|
||||
DELETE FROM osm_transportation_name_linestring_gen1 AS n
|
||||
USING name_changes_compact AS c
|
||||
WHERE
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
INSERT INTO osm_transportation_name_linestring_gen1
|
||||
SELECT n.*
|
||||
FROM osm_transportation_name_linestring_gen1_view AS n
|
||||
JOIN name_changes_compact AS c ON
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
-- REFRESH osm_transportation_name_linestring_gen2
|
||||
DELETE FROM osm_transportation_name_linestring_gen2 AS n
|
||||
USING name_changes_compact AS c
|
||||
WHERE
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
INSERT INTO osm_transportation_name_linestring_gen2
|
||||
SELECT n.*
|
||||
FROM osm_transportation_name_linestring_gen2_view AS n
|
||||
JOIN name_changes_compact AS c ON
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
-- REFRESH osm_transportation_name_linestring_gen3
|
||||
DELETE FROM osm_transportation_name_linestring_gen3 AS n
|
||||
USING name_changes_compact AS c
|
||||
WHERE
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
INSERT INTO osm_transportation_name_linestring_gen3
|
||||
SELECT n.*
|
||||
FROM osm_transportation_name_linestring_gen3_view AS n
|
||||
JOIN name_changes_compact AS c ON
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
-- REFRESH osm_transportation_name_linestring_gen4
|
||||
DELETE FROM osm_transportation_name_linestring_gen4 AS n
|
||||
USING name_changes_compact AS c
|
||||
WHERE
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
INSERT INTO osm_transportation_name_linestring_gen4
|
||||
SELECT n.*
|
||||
FROM osm_transportation_name_linestring_gen4_view AS n
|
||||
JOIN name_changes_compact AS c ON
|
||||
coalesce(n.name, n.ref) = c.name_ref AND
|
||||
n.name IS NOT DISTINCT FROM c.name AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.ref IS NOT DISTINCT FROM c.ref AND n.highway IS NOT DISTINCT FROM c.highway AND n.construction IS NOT DISTINCT FROM c.construction AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
coalesce(n.name, n.ref) = c.name_ref
|
||||
AND n.name IS NOT DISTINCT FROM c.name
|
||||
AND n.name_en IS NOT DISTINCT FROM c.name_en
|
||||
AND n.name_de IS NOT DISTINCT FROM c.name_de
|
||||
AND n.ref IS NOT DISTINCT FROM c.ref
|
||||
AND n.highway IS NOT DISTINCT FROM c.highway
|
||||
AND n.construction IS NOT DISTINCT FROM c.construction
|
||||
AND n.brunnel IS NOT DISTINCT FROM c.brunnel
|
||||
AND n.network IS NOT DISTINCT FROM c.network_type;
|
||||
|
||||
DROP TABLE name_changes_compact;
|
||||
DELETE FROM transportation_name.name_changes;
|
||||
|
|
Ładowanie…
Reference in New Issue