Merge pull request #677 from lun/321-highway-construction

Add roads under construction
pull/604/head^2
Eva Jelinkova 2019-10-31 18:42:11 +01:00 zatwierdzone przez GitHub
commit c5b58057cb
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
8 zmienionych plików z 131 dodań i 86 usunięć

Wyświetl plik

@ -9,7 +9,7 @@ $$ LANGUAGE SQL IMMUTABLE STRICT;
-- The classes for highways are derived from the classes used in ClearTables
-- https://github.com/ClearTables/ClearTables/blob/master/transportation.lua
CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT) RETURNS TEXT AS $$
CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT, construction TEXT) RETURNS TEXT AS $$
SELECT CASE
WHEN highway IN ('motorway', 'motorway_link') THEN 'motorway'
WHEN highway IN ('trunk', 'trunk_link') THEN 'trunk'
@ -17,9 +17,19 @@ CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT) RE
WHEN highway IN ('secondary', 'secondary_link') THEN 'secondary'
WHEN highway IN ('tertiary', 'tertiary_link') THEN 'tertiary'
WHEN highway IN ('unclassified', 'residential', 'living_street', 'road') THEN 'minor'
WHEN highway IN ('service', 'track') THEN highway
WHEN highway IN ('pedestrian', 'path', 'footway', 'cycleway', 'steps', 'bridleway', 'corridor') OR public_transport IN ('platform') THEN 'path'
WHEN highway = 'raceway' THEN 'raceway'
WHEN highway IN ('service', 'track', 'raceway') THEN highway
WHEN highway = 'construction' THEN CASE
WHEN construction IN ('motorway', 'motorway_link') THEN 'motorway_construction'
WHEN construction IN ('trunk', 'trunk_link') THEN 'trunk_construction'
WHEN construction IN ('primary', 'primary_link') THEN 'primary_construction'
WHEN construction IN ('secondary', 'secondary_link') THEN 'secondary_construction'
WHEN construction IN ('tertiary', 'tertiary_link') THEN 'tertiary_construction'
WHEN construction = '' OR construction IN ('unclassified', 'residential', 'living_street', 'road') THEN 'minor_construction'
WHEN construction IN ('pedestrian', 'path', 'footway', 'cycleway', 'steps', 'bridleway', 'corridor') OR public_transport IN ('platform') THEN 'path_construction'
WHEN construction IN ('service', 'track', 'raceway') THEN CONCAT(highway, '_construction')
ELSE NULL
END
ELSE NULL
END;
$$ LANGUAGE SQL IMMUTABLE;

Wyświetl plik

@ -12,7 +12,7 @@ indoor INT, surface TEXT) AS $$
SELECT
osm_id, geometry,
CASE
WHEN NULLIF(highway, '') IS NOT NULL OR NULLIF(public_transport, '') IS NOT NULL THEN highway_class(highway, public_transport)
WHEN NULLIF(highway, '') IS NOT NULL OR NULLIF(public_transport, '') IS NOT NULL THEN highway_class(highway, public_transport, construction)
WHEN NULLIF(railway, '') IS NOT NULL THEN railway_class(railway)
WHEN NULLIF(aerialway, '') IS NOT NULL THEN aerialway
WHEN NULLIF(shipway, '') IS NOT NULL THEN shipway
@ -21,7 +21,7 @@ indoor INT, surface TEXT) AS $$
CASE
WHEN railway IS NOT NULL THEN railway
WHEN (highway IS NOT NULL OR public_transport IS NOT NULL)
AND highway_class(highway, public_transport) = 'path'
AND highway_class(highway, public_transport, construction) = 'path'
THEN COALESCE(NULLIF(public_transport, ''), highway)
ELSE NULL
END AS subclass,
@ -39,13 +39,13 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_transportation_merge_linestring_gen7 -> layer_transportation:z4
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
NULL::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
NULL AS surface,
NULL AS surface,
z_order
FROM osm_transportation_merge_linestring_gen7
WHERE zoom_level = 4
@ -54,7 +54,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_transportation_merge_linestring_gen6 -> layer_transportation:z5
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
@ -68,7 +68,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_transportation_merge_linestring_gen5 -> layer_transportation:z6
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
@ -82,7 +82,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_transportation_merge_linestring_gen4 -> layer_transportation:z7
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
@ -96,7 +96,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_transportation_merge_linestring_gen3 -> layer_transportation:z8
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
@ -111,7 +111,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_highway_linestring_gen2 -> layer_transportation:z10
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
@ -126,7 +126,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_highway_linestring_gen1 -> layer_transportation:z11
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, 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,
@ -143,7 +143,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_highway_linestring -> layer_transportation:z14_
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway,
public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, man_made,
layer,
@ -158,12 +158,12 @@ indoor INT, surface TEXT) AS $$
FROM osm_highway_linestring
WHERE NOT is_area AND (
zoom_level = 12 AND (
highway_class(highway, public_transport) NOT IN ('track', 'path', 'minor')
highway_class(highway, public_transport, construction) NOT IN ('track', 'path', 'minor')
OR highway IN ('unclassified', 'residential')
) AND man_made <> 'pier'
OR zoom_level = 13
AND (
highway_class(highway, public_transport) NOT IN ('track', 'path') AND man_made <> 'pier'
highway_class(highway, public_transport, construction) NOT IN ('track', 'path') AND man_made <> 'pier'
OR
man_made = 'pier' AND NOT ST_IsClosed(geometry)
)
@ -179,7 +179,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_railway_linestring_gen5 -> layer_transportation:z8
SELECT
osm_id, geometry,
NULL AS highway, railway, NULL AS aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel,
NULL::boolean AS is_ford,
@ -194,7 +194,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_railway_linestring_gen4 -> layer_transportation:z9
SELECT
osm_id, geometry,
NULL AS highway, railway, NULL AS aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel,
NULL::boolean AS is_ford,
@ -209,7 +209,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_railway_linestring_gen3 -> layer_transportation:z10
SELECT
osm_id, geometry,
NULL AS highway, railway, NULL AS aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -222,7 +222,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_railway_linestring_gen2 -> layer_transportation:z11
SELECT
osm_id, geometry,
NULL AS highway, railway, NULL AS aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -235,7 +235,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_railway_linestring_gen1 -> layer_transportation:z12
SELECT
osm_id, geometry,
NULL AS highway, railway, NULL AS aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -249,7 +249,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_railway_linestring -> layer_transportation:z14_
SELECT
osm_id, geometry,
NULL AS highway, railway, NULL AS aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -263,7 +263,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_aerialway_linestring_gen1 -> layer_transportation:z12
SELECT
osm_id, geometry,
NULL AS highway, NULL as railway, aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, NULL as railway, aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -276,7 +276,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_aerialway_linestring -> layer_transportation:z14_
SELECT
osm_id, geometry,
NULL AS highway, NULL as railway, aerialway, NULL AS shipway,
NULL AS highway, NULL AS construction, NULL as railway, aerialway, NULL AS shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -288,7 +288,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_shipway_linestring_gen2 -> layer_transportation:z11
SELECT
osm_id, geometry,
NULL AS highway, NULL AS railway, NULL AS aerialway, shipway,
NULL AS highway, NULL AS construction, NULL AS railway, NULL AS aerialway, shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -300,7 +300,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_shipway_linestring_gen1 -> layer_transportation:z12
SELECT
osm_id, geometry,
NULL AS highway, NULL AS railway, NULL AS aerialway, shipway,
NULL AS highway, NULL AS construction, NULL AS railway, NULL AS aerialway, shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -313,7 +313,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_shipway_linestring -> layer_transportation:z14_
SELECT
osm_id, geometry,
NULL AS highway, NULL AS railway, NULL AS aerialway, shipway,
NULL AS highway, NULL AS construction, NULL AS railway, NULL AS aerialway, shipway,
NULL AS public_transport, service_value(service) AS service,
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
layer, NULL::int AS level, NULL::boolean AS indoor,
@ -330,7 +330,7 @@ indoor INT, surface TEXT) AS $$
-- etldoc: osm_highway_polygon -> layer_transportation:z14_
SELECT
osm_id, geometry,
highway, NULL AS railway, NULL AS aerialway, NULL AS shipway,
highway, NULL AS construction, NULL AS railway, NULL AS aerialway, NULL AS shipway,
public_transport, NULL AS service,
CASE WHEN man_made IN ('bridge') THEN TRUE
ELSE FALSE

Wyświetl plik

@ -45,13 +45,13 @@ generalized_tables:
# etldoc: imposm3 -> osm_highway_linestring_gen2
highway_linestring_gen2:
source: highway_linestring_gen1
sql_filter: highway IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link') AND NOT is_area
sql_filter: (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link') OR highway = 'construction' AND construction IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link')) AND NOT is_area
tolerance: ZRES11
# etldoc: imposm3 -> osm_highway_linestring_gen1
highway_linestring_gen1:
source: highway_linestring
sql_filter: highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') AND NOT is_area AND ST_IsValid(geometry)
sql_filter: (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') OR highway = 'construction' AND construction IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link')) AND NOT is_area AND ST_IsValid(geometry)
tolerance: ZRES12
name_field: &name
@ -150,6 +150,9 @@ tables:
- name: highway
key: highway
type: string
- name: construction
key: construction
type: string
- *ref
- *network
- *z_order
@ -187,18 +190,19 @@ tables:
- tertiary_link
- unclassified
- residential
- road
- living_street
- raceway
- track
- service
- path
- cycleway
- bridleway
- footway
- corridor
- road
- pedestrian
- path
- footway
- cycleway
- steps
- bridleway
- corridor
- service
- track
- raceway
- construction
public_transport:
- platform
man_made:

Wyświetl plik

@ -14,9 +14,10 @@ layer:
fields:
class:
description: |
Distinguish between more and less important roads or railways.
Distinguish between more and less important roads or railways and roads under construction.
Class is derived from the value of the
[`highway`](http://wiki.openstreetmap.org/wiki/Key:highway),
[`construction`](http://wiki.openstreetmap.org/wiki/Key:construction),
[`railway`](http://wiki.openstreetmap.org/wiki/Key:railway),
[`aerialway`](http://wiki.openstreetmap.org/wiki/Key:aerialway),
[`route`](http://wiki.openstreetmap.org/wiki/Key:route) tag (for
@ -33,6 +34,16 @@ layer:
- track
- path
- raceway
- motorway_construction
- trunk_construction
- primary_construction
- secondary_construction
- tertiary_construction
- minor_construction
- service_construction
- track_construction
- path_construction
- raceway_construction
- rail
- transit
- cable_car

Wyświetl plik

@ -22,84 +22,88 @@ CREATE INDEX IF NOT EXISTS osm_highway_linestring_highway_idx
-- Improve performance of the sql below
CREATE INDEX IF NOT EXISTS osm_highway_linestring_highway_partial_idx
ON osm_highway_linestring(highway)
WHERE highway IN ('motorway','trunk', 'primary');
WHERE highway IN ('motorway','trunk', 'primary', 'construction');
-- etldoc: osm_highway_linestring -> osm_transportation_merge_linestring
CREATE MATERIALIZED VIEW osm_transportation_merge_linestring AS (
SELECT
(ST_Dump(geometry)).geom AS geometry,
NULL::bigint AS osm_id,
highway,
highway, construction,
z_order
FROM (
SELECT
ST_LineMerge(ST_Collect(geometry)) AS geometry,
highway,
highway, construction,
min(z_order) AS z_order
FROM osm_highway_linestring
WHERE highway IN ('motorway','trunk', 'primary') AND ST_IsValid(geometry)
group by highway
WHERE (highway IN ('motorway','trunk', 'primary') OR highway = 'construction' AND construction IN ('motorway','trunk', 'primary'))
AND ST_IsValid(geometry)
group by highway, construction
) AS highway_union
);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_geometry_idx
ON osm_transportation_merge_linestring USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_highway_partial_idx
ON osm_transportation_merge_linestring(highway)
WHERE highway IN ('motorway','trunk', 'primary');
ON osm_transportation_merge_linestring(highway, construction)
WHERE highway IN ('motorway','trunk', 'primary', 'construction');
-- etldoc: osm_transportation_merge_linestring -> osm_transportation_merge_linestring_gen3
CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen3 AS (
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, highway, z_order
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, highway, construction, z_order
FROM osm_transportation_merge_linestring
WHERE highway IN ('motorway','trunk', 'primary')
OR highway = 'construction' AND construction IN ('motorway','trunk', 'primary')
);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen3_geometry_idx
ON osm_transportation_merge_linestring_gen3 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen3_highway_partial_idx
ON osm_transportation_merge_linestring_gen3(highway)
WHERE highway IN ('motorway','trunk', 'primary');
ON osm_transportation_merge_linestring_gen3(highway, construction)
WHERE highway IN ('motorway','trunk', 'primary', 'construction');
-- etldoc: osm_transportation_merge_linestring_gen3 -> osm_transportation_merge_linestring_gen4
CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen4 AS (
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, highway, z_order
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, highway, construction, z_order
FROM osm_transportation_merge_linestring_gen3
WHERE highway IN ('motorway','trunk', 'primary') AND ST_Length(geometry) > 50
WHERE (highway IN ('motorway','trunk', 'primary') OR highway = 'construction' AND construction IN ('motorway','trunk', 'primary'))
AND ST_Length(geometry) > 50
);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen4_geometry_idx
ON osm_transportation_merge_linestring_gen4 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen4_highway_partial_idx
ON osm_transportation_merge_linestring_gen4(highway)
WHERE highway IN ('motorway','trunk', 'primary');
ON osm_transportation_merge_linestring_gen4(highway, construction)
WHERE highway IN ('motorway','trunk', 'primary', 'construction');
-- etldoc: osm_transportation_merge_linestring_gen4 -> osm_transportation_merge_linestring_gen5
CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen5 AS (
SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, highway, z_order
SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, highway, construction, z_order
FROM osm_transportation_merge_linestring_gen4
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 100
WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk'))
AND ST_Length(geometry) > 100
);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_geometry_idx
ON osm_transportation_merge_linestring_gen5 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_highway_partial_idx
ON osm_transportation_merge_linestring_gen5(highway)
WHERE highway IN ('motorway', 'trunk');
ON osm_transportation_merge_linestring_gen5(highway, construction)
WHERE highway IN ('motorway','trunk', 'construction');
-- etldoc: osm_transportation_merge_linestring_gen5 -> osm_transportation_merge_linestring_gen6
CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen6 AS (
SELECT ST_Simplify(geometry, 1000) AS geometry, osm_id, highway, z_order
SELECT ST_Simplify(geometry, 1000) AS geometry, osm_id, highway, construction, z_order
FROM osm_transportation_merge_linestring_gen5
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 500
WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) AND ST_Length(geometry) > 500
);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_geometry_idx
ON osm_transportation_merge_linestring_gen6 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_highway_partial_idx
ON osm_transportation_merge_linestring_gen6(highway)
WHERE highway IN ('motorway','trunk');
ON osm_transportation_merge_linestring_gen6(highway, construction)
WHERE highway IN ('motorway','trunk', 'construction');
-- etldoc: osm_transportation_merge_linestring_gen6 -> osm_transportation_merge_linestring_gen7
CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen7 AS (
SELECT ST_Simplify(geometry, 2000) AS geometry, osm_id, highway, z_order
SELECT ST_Simplify(geometry, 2000) AS geometry, osm_id, highway, construction, z_order
FROM osm_transportation_merge_linestring_gen6
WHERE highway IN ('motorway') AND ST_Length(geometry) > 1000
WHERE (highway = 'motorway' OR highway = 'construction' AND construction = 'motorway') AND ST_Length(geometry) > 1000
);
CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen7_geometry_idx
ON osm_transportation_merge_linestring_gen7 USING gist(geometry);

Wyświetl plik

@ -19,9 +19,9 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text,
when length(coalesce(ref, ''))>0
then 'road'
end as network,
highway_class(highway, '') AS class,
highway_class(highway, '', construction) AS class,
CASE
WHEN highway IS NOT NULL AND highway_class(highway, '') = 'path'
WHEN highway IS NOT NULL AND highway_class(highway, '', construction) = 'path'
THEN highway
ELSE NULL
END AS subclass,
@ -70,6 +70,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text,
"tags",
ref,
highway,
construction,
network,
z_order,
layer,
@ -78,7 +79,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text,
FROM osm_transportation_name_linestring
WHERE zoom_level = 12
AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry)
AND highway_class(highway, '') NOT IN ('minor', 'track', 'path')
AND highway_class(highway, '', construction) NOT IN ('minor', 'track', 'path')
AND NOT highway_is_link(highway)
UNION ALL
@ -92,6 +93,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text,
"tags",
ref,
highway,
construction,
network,
z_order,
layer,
@ -100,7 +102,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text,
FROM osm_transportation_name_linestring
WHERE zoom_level = 13
AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry)
AND highway_class(highway, '') NOT IN ('track', 'path')
AND highway_class(highway, '', construction) NOT IN ('track', 'path')
UNION ALL
-- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z14_
@ -113,6 +115,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text,
"tags",
ref,
highway,
construction,
network,
z_order,
layer,

Wyświetl plik

@ -29,7 +29,7 @@ layer:
- road (default)
class:
description: |
Distinguish between more and less important roads.
Distinguish between more and less important roads and roads under construction.
values:
- motorway
- trunk
@ -41,6 +41,16 @@ layer:
- track
- path
- raceway
- motorway_construction
- trunk_construction
- primary_construction
- secondary_construction
- tertiary_construction
- minor_construction
- service_construction
- track_construction
- path_construction
- raceway_construction
- rail
- transit
subclass:

Wyświetl plik

@ -24,6 +24,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_network AS (
else hl.ref
end as ref,
hl.highway,
hl.construction,
CASE WHEN highway IN ('footway', 'steps') THEN layer
ELSE NULL::int
END AS layer,
@ -53,6 +54,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
tags || get_basic_names(tags, geometry) AS "tags",
ref,
highway,
construction,
"level",
layer,
indoor,
@ -68,6 +70,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
AS "tags",
ref,
highway,
construction,
"level",
layer,
indoor,
@ -77,56 +80,56 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
WHERE ("rank"=1 OR "rank" is null)
AND (name <> '' OR ref <> '')
AND NULLIF(highway, '') IS NOT NULL
group by name, name_en, name_de, ref, highway, "level", layer, indoor, network_type
group by name, name_en, name_de, ref, highway, construction, "level", layer, indoor, network_type
) AS highway_union
);
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_highway_partial_idx
ON osm_transportation_name_linestring(highway)
WHERE highway IN ('motorway','trunk');
ON osm_transportation_name_linestring(highway, construction)
WHERE highway IN ('motorway','trunk', 'construction');
-- etldoc: osm_transportation_name_linestring -> osm_transportation_name_linestring_gen1
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen1 AS (
SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order
FROM osm_transportation_name_linestring
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 8000
WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) AND ST_Length(geometry) > 8000
);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_geometry_idx ON osm_transportation_name_linestring_gen1 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_highway_partial_idx
ON osm_transportation_name_linestring_gen1(highway)
WHERE highway IN ('motorway','trunk');
ON osm_transportation_name_linestring_gen1(highway, construction)
WHERE highway IN ('motorway','trunk', 'construction');
-- etldoc: osm_transportation_name_linestring_gen1 -> osm_transportation_name_linestring_gen2
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen2 AS (
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order
FROM osm_transportation_name_linestring_gen1
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 14000
WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) AND ST_Length(geometry) > 14000
);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_geometry_idx ON osm_transportation_name_linestring_gen2 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_highway_partial_idx
ON osm_transportation_name_linestring_gen2(highway)
WHERE highway = 'motorway';
ON osm_transportation_name_linestring_gen2(highway, construction)
WHERE highway IN ('motorway','trunk', 'construction');
-- etldoc: osm_transportation_name_linestring_gen2 -> osm_transportation_name_linestring_gen3
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen3 AS (
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order
FROM osm_transportation_name_linestring_gen2
WHERE highway = 'motorway' AND ST_Length(geometry) > 20000
WHERE (highway = 'motorway' OR highway = 'construction' AND construction = 'motorway') AND ST_Length(geometry) > 20000
);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_geometry_idx ON osm_transportation_name_linestring_gen3 USING gist(geometry);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_highway_partial_idx
ON osm_transportation_name_linestring_gen3(highway)
WHERE highway = 'motorway';
ON osm_transportation_name_linestring_gen3(highway, construction)
WHERE highway IN ('motorway', 'construction');
-- etldoc: osm_transportation_name_linestring_gen3 -> osm_transportation_name_linestring_gen4
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen4 AS (
SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order
FROM osm_transportation_name_linestring_gen3
WHERE highway = 'motorway' AND ST_Length(geometry) > 20000
WHERE (highway = 'motorway' OR highway = 'construction' AND construction = 'motorway') AND ST_Length(geometry) > 20000
);
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen4_geometry_idx ON osm_transportation_name_linestring_gen4 USING gist(geometry);