diff --git a/layers/transportation/etl_diagram.png b/layers/transportation/etl_diagram.png index c5940322..cd15a66a 100644 Binary files a/layers/transportation/etl_diagram.png and b/layers/transportation/etl_diagram.png differ diff --git a/layers/transportation/network_type.sql b/layers/transportation/network_type.sql index 7e384a37..1db23c62 100644 --- a/layers/transportation/network_type.sql +++ b/layers/transportation/network_type.sql @@ -16,7 +16,7 @@ $$ CREATE TYPE route_network_type AS enum ( 'us-interstate', 'us-highway', 'us-state', 'ca-transcanada', 'ca-provincial-arterial', 'ca-provincial', - 'gb-motorway', 'gb-trunk' + 'gb-motorway', 'gb-trunk', 'gb-primary' ); END $$; diff --git a/layers/transportation/update_route_member.sql b/layers/transportation/update_route_member.sql index de73c2a1..4c7e2b30 100644 --- a/layers/transportation/update_route_member.sql +++ b/layers/transportation/update_route_member.sql @@ -1,23 +1,27 @@ -CREATE TABLE IF NOT EXISTS ne_10m_admin_0_bg_buffer AS +CREATE TABLE IF NOT EXISTS ne_10m_admin_0_gb_buffer AS SELECT ST_Buffer(geometry, 10000) FROM ne_10m_admin_0_countries WHERE iso_a2 = 'GB'; +-- etldoc: osm_route_member -> gbr_route_members_view CREATE OR REPLACE VIEW gbr_route_members_view AS SELECT 0, osm_id, - substring(ref FROM E'^[AM][0-9AM()]+'), - CASE WHEN highway = 'motorway' THEN 'omt-gb-motorway' ELSE 'omt-gb-trunk' END + substring(ref FROM E'^[ABM][0-9ABM()]+'), + -- See https://wiki.openstreetmap.org/wiki/Roads_in_the_United_Kingdom + CASE WHEN highway = 'motorway' THEN 'omt-gb-motorway' + WHEN highway = 'trunk' THEN 'omt-gb-trunk' + WHEN highway IN ('primary','secondary') THEN 'omt-gb-primary' END AS network FROM osm_highway_linestring -WHERE length(ref) > 0 - AND ST_Intersects(geometry, (SELECT * FROM ne_10m_admin_0_bg_buffer)) - AND highway IN ('motorway', 'trunk') +WHERE length(ref) > 1 + AND ST_Intersects(geometry, (SELECT * FROM ne_10m_admin_0_gb_buffer)) + AND highway IN ('motorway', 'trunk', 'primary', 'secondary') ; -- Create GBR relations (so we can use it in the same way as other relations) DELETE FROM osm_route_member -WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk'); --- etldoc: osm_highway_linestring -> osm_route_member +WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk', 'omt-gb-primary'); +-- etldoc: gbr_route_members_view -> osm_route_member INSERT INTO osm_route_member (osm_id, member, ref, network) SELECT * FROM gbr_route_members_view; @@ -43,6 +47,7 @@ SELECT CASE WHEN network LIKE 'CA:__' OR network LIKE 'CA:__:%' THEN 'ca-provincial'::route_network_type WHEN network = 'omt-gb-motorway' THEN 'gb-motorway'::route_network_type WHEN network = 'omt-gb-trunk' THEN 'gb-trunk'::route_network_type + WHEN network = 'omt-gb-primary' THEN 'gb-primary'::route_network_type END; $$ LANGUAGE sql IMMUTABLE PARALLEL SAFE; @@ -62,7 +67,7 @@ BEGIN FROM osm_route_member AS r USING transportation_name.network_changes AS c - WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk') + WHERE network IN ('omt-gb-motorway', 'omt-gb-trunk', 'omt-gb-primary') AND r.osm_id = c.osm_id; INSERT INTO osm_route_member (osm_id, member, ref, network) diff --git a/layers/transportation_name/transportation_name.yaml b/layers/transportation_name/transportation_name.yaml index b08f1193..5cb24a3e 100644 --- a/layers/transportation_name/transportation_name.yaml +++ b/layers/transportation_name/transportation_name.yaml @@ -32,6 +32,7 @@ layer: - ca-provincial - gb-motorway - gb-trunk + - gb-primary - road (default) class: description: |