diff --git a/layers/transportation/class.sql b/layers/transportation/class.sql index d67d0fc..d82de75 100644 --- a/layers/transportation/class.sql +++ b/layers/transportation/class.sql @@ -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) RETURNS TEXT AS $$ +CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT) RETURNS TEXT AS $$ SELECT CASE WHEN highway IN ('motorway', 'motorway_link') THEN 'motorway' WHEN highway IN ('trunk', 'trunk_link') THEN 'trunk' @@ -18,7 +18,7 @@ CREATE OR REPLACE FUNCTION highway_class(highway TEXT) RETURNS TEXT AS $$ 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') THEN 'path' + WHEN highway IN ('pedestrian', 'path', 'footway', 'cycleway', 'steps', 'bridleway', 'corridor') OR public_transport IN ('platform') THEN 'path' WHEN highway = 'raceway' THEN 'raceway' ELSE NULL END; diff --git a/layers/transportation/layer.sql b/layers/transportation/layer.sql index 1d7a637..bbec2b7 100644 --- a/layers/transportation/layer.sql +++ b/layers/transportation/layer.sql @@ -11,7 +11,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, CASE - WHEN highway IS NOT NULL THEN highway_class(highway) + WHEN highway IS NOT NULL OR public_transport IS NOT NULL THEN highway_class(highway, public_transport) WHEN railway IS NOT NULL THEN railway_class(railway) WHEN aerialway IS NOT NULL THEN aerialway WHEN shipway IS NOT NULL THEN shipway @@ -31,7 +31,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -44,7 +44,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -57,7 +57,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -70,7 +70,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -83,7 +83,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -97,7 +97,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -111,7 +111,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + 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::boolean AS is_oneway, @@ -127,15 +127,16 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_highway_linestring WHERE NOT is_area AND ( zoom_level = 12 AND ( - highway_class(highway) NOT IN ('track', 'path', 'minor') + highway_class(highway, public_transport) NOT IN ('track', 'path', 'minor') OR highway IN ('unclassified', 'residential') ) - OR zoom_level = 13 AND highway_class(highway) NOT IN ('track', 'path') + OR zoom_level = 13 + AND highway_class(highway, public_transport) NOT IN ('track', 'path') OR zoom_level >= 14 ) UNION ALL @@ -144,7 +145,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, NULL::boolean AS is_ramp, NULL::boolean AS is_oneway, @@ -158,7 +159,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, NULL::boolean AS is_ramp, NULL::boolean AS is_oneway, @@ -172,7 +173,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_railway_linestring_gen3 WHERE zoom_level = 10 @@ -183,7 +184,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_railway_linestring_gen2 WHERE zoom_level = 11 @@ -194,7 +195,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_railway_linestring_gen1 WHERE zoom_level = 12 @@ -206,7 +207,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_railway_linestring WHERE zoom_level = 13 @@ -218,7 +219,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, NULL as railway, aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_aerialway_linestring_gen1 WHERE zoom_level = 12 @@ -229,7 +230,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, NULL as railway, aerialway, NULL AS shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_aerialway_linestring WHERE zoom_level >= 13 @@ -239,7 +240,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, NULL AS railway, NULL AS aerialway, shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_shipway_linestring_gen2 WHERE zoom_level = 11 @@ -249,7 +250,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, NULL AS railway, NULL AS aerialway, shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_shipway_linestring_gen1 WHERE zoom_level = 12 @@ -260,7 +261,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, NULL AS highway, NULL AS railway, NULL AS aerialway, shipway, - service_value(service) AS service, + NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order FROM osm_shipway_linestring WHERE zoom_level >= 13 @@ -275,7 +276,7 @@ ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ SELECT osm_id, geometry, highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, - NULL AS service, + public_transport, NULL AS service, FALSE AS is_bridge, FALSE AS is_tunnel, FALSE AS is_ford, FALSE AS is_ramp, FALSE AS is_oneway, z_order FROM osm_highway_polygon diff --git a/layers/transportation/mapping.yaml b/layers/transportation/mapping.yaml index 66b77a7..c96cb29 100644 --- a/layers/transportation/mapping.yaml +++ b/layers/transportation/mapping.yaml @@ -100,6 +100,10 @@ usage_field: &usage key: usage name: usage type: string +public_transport_field: &public_transport + key: public_transport + name: public_transport + type: string ref_field: &ref key: ref name: ref @@ -144,6 +148,7 @@ tables: - *area - *service - *usage + - *public_transport mapping: highway: - motorway @@ -170,6 +175,8 @@ tables: - corridor - pedestrian - steps + public_transport: + - platform # etldoc: imposm3 -> osm_railway_linestring railway_linestring: @@ -286,9 +293,12 @@ tables: - name: is_area key: area type: bool + - *public_transport mapping: highway: - pedestrian + public_transport: + - platform # TODO: Future table for joining networks # etldoc: imposm3 -> osm_route_member diff --git a/layers/transportation/mapping_diagram.png b/layers/transportation/mapping_diagram.png index 47357d5..9823485 100644 Binary files a/layers/transportation/mapping_diagram.png and b/layers/transportation/mapping_diagram.png differ diff --git a/layers/transportation_name/layer.sql b/layers/transportation_name/layer.sql index 089e93a..3ce1280 100644 --- a/layers/transportation_name/layer.sql +++ b/layers/transportation_name/layer.sql @@ -17,7 +17,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de when length(coalesce(ref, ''))>0 then 'road' end as network, - highway_class(highway) AS class + highway_class(highway, '') AS class FROM ( -- etldoc: osm_transportation_name_linestring_gen4 -> layer_transportation_name:z6 @@ -46,7 +46,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de SELECT * 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, '') NOT IN ('minor', 'track', 'path') AND NOT highway_is_link(highway) UNION ALL @@ -54,7 +54,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de SELECT * 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, '') NOT IN ('track', 'path') UNION ALL -- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z14_