diff --git a/layers/transportation/class.sql b/layers/transportation/class.sql index ff83b9b..20078e8 100644 --- a/layers/transportation/class.sql +++ b/layers/transportation/class.sql @@ -41,3 +41,13 @@ CREATE OR REPLACE FUNCTION service_value(service TEXT) RETURNS TEXT AS $$ ELSE NULL END; $$ LANGUAGE SQL IMMUTABLE STRICT; + +-- Map Natural Earth types to OSM highway +CREATE OR REPLACE FUNCTION ne_highway(type VARCHAR) RETURNS VARCHAR AS $$ + SELECT CASE type + WHEN 'Major Highway' THEN 'motorway' + WHEN 'Secondary Highway' THEN 'trunk' + WHEN 'Road' THEN 'primary' + ELSE type + END; +$$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/transportation/layer.sql b/layers/transportation/layer.sql index 347e564..a0d0356 100644 --- a/layers/transportation/layer.sql +++ b/layers/transportation/layer.sql @@ -20,16 +20,18 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text, ramp brunnel(is_bridge, is_tunnel, is_ford) AS brunnel, NULLIF(service, '') AS service FROM ( - -- etldoc: ne_10m_global_roads -> layer_transportation:z4z6 + -- etldoc: ne_10m_roads -> layer_transportation:z4z6 SELECT - NULL::bigint AS osm_id, geometry, - highway, NULL AS railway, NULL AS service, + NULL::bigint AS osm_id, geom AS geometry, + ne_highway(type) AS highway, NULL AS railway, 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, 0 AS z_order - FROM ne_10m_global_roads - WHERE zoom_level BETWEEN 4 AND 6 AND scalerank <= 1 + zoom_level + FROM ne_10m_roads + WHERE featurecla = 'Road' + AND type IN ('Major Highway', 'Secondary Highway', 'Road') + AND zoom_level BETWEEN 4 AND 6 AND scalerank <= 1 + zoom_level UNION ALL -- etldoc: osm_highway_linestring_gen4 -> layer_transportation:z7z8 diff --git a/layers/transportation/ne_global_roads.sql b/layers/transportation/ne_global_roads.sql deleted file mode 100644 index 49bdcf5..0000000 --- a/layers/transportation/ne_global_roads.sql +++ /dev/null @@ -1,31 +0,0 @@ - - -CREATE OR REPLACE FUNCTION ne_highway(type VARCHAR) RETURNS VARCHAR AS $$ - SELECT CASE type - WHEN 'Major Highway' THEN 'motorway' - WHEN 'Secondary Highway' THEN 'trunk' - WHEN 'Road' THEN 'primary' - ELSE type - END; -$$ LANGUAGE SQL IMMUTABLE; - - --- etldoc: ne_global_roads_sql -> ne_10m_global_roads ; -CREATE TABLE IF NOT EXISTS ne_10m_global_roads AS ( - - -- etldoc: ne_10m_roads -> ne_10m_global_roads - SELECT geom AS geometry, scalerank, ne_highway(type) AS highway - FROM ne_10m_roads - WHERE continent <> 'North America' - AND featurecla = 'Road' - AND type IN ('Major Highway', 'Secondary Highway', 'Road') - UNION ALL - - -- etldoc: ne_10m_roads_north_america -> ne_10m_global_roads - SELECT geom AS geometry, scalerank, ne_highway(type) AS highway - FROM ne_10m_roads_north_america - WHERE class IN ('State', 'Federal', 'Interstate') -); - -CREATE INDEX IF NOT EXISTS ne_10m_global_roads_geometry_idx ON ne_10m_global_roads USING gist(geometry); -CREATE INDEX IF NOT EXISTS ne_10m_global_roads_scalerank_idx ON ne_10m_global_roads(scalerank); diff --git a/layers/transportation/transportation.yaml b/layers/transportation/transportation.yaml index c6a47dc..3788f8c 100644 --- a/layers/transportation/transportation.yaml +++ b/layers/transportation/transportation.yaml @@ -102,7 +102,6 @@ layer: query: (SELECT geometry, class, subclass, oneway, ramp, brunnel, service FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t schema: - ./class.sql - - ./ne_global_roads.sql - ./layer.sql datasources: - type: imposm3