kopia lustrzana https://github.com/openmaptiles/openmaptiles
Merge pull request #185 from klokantech/shields
Add network to transportation_name, adjust zoom levels of transportationpull/189/head
commit
75326c18a4
|
@ -4,8 +4,7 @@
|
|||
Read the layer documentation at **http://openmaptiles.org/schema#transportation**
|
||||
|
||||
### Mapping Diagram
|
||||

|
||||

|
||||
|
||||
### ETL diagram
|
||||

|
||||
|
||||

|
||||
|
|
|
@ -42,13 +42,3 @@ 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;
|
||||
|
|
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 155 KiB |
|
@ -4,7 +4,7 @@ $$ LANGUAGE SQL IMMUTABLE STRICT;
|
|||
|
||||
|
||||
-- etldoc: layer_transportation[shape=record fillcolor=lightpink, style="rounded,filled",
|
||||
-- etldoc: label="<sql> layer_transportation |<z4z6> z4-z6 |<z7z8> z7-z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
|
||||
-- etldoc: label="<sql> layer_transportation |<z4> z4 |<z5z6> z5-z6 |<z7> z7 |<z8> z8 |<z9z10> z9-z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
|
||||
CREATE OR REPLACE FUNCTION layer_transportation(bbox geometry, zoom_level int)
|
||||
RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int, brunnel TEXT, service TEXT) AS $$
|
||||
SELECT
|
||||
|
@ -20,21 +20,29 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int
|
|||
brunnel(is_bridge, is_tunnel, is_ford) AS brunnel,
|
||||
NULLIF(service, '') AS service
|
||||
FROM (
|
||||
-- etldoc: ne_10m_roads -> layer_transportation:z4z6
|
||||
-- etldoc: osm_highway_linestring_gen6 -> layer_transportation:z4
|
||||
SELECT
|
||||
NULL::bigint AS osm_id, geometry,
|
||||
ne_highway(type) AS highway, NULL AS railway, NULL AS service,
|
||||
osm_id, geometry, 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_roads
|
||||
WHERE featurecla = 'Road'
|
||||
AND type IN ('Major Highway', 'Secondary Highway', 'Road')
|
||||
AND zoom_level BETWEEN 4 AND 6 AND scalerank <= 1 + zoom_level
|
||||
z_order
|
||||
FROM osm_highway_linestring_gen6
|
||||
WHERE zoom_level = 4
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_highway_linestring_gen4 -> layer_transportation:z7z8
|
||||
-- etldoc: osm_highway_linestring_gen5 -> layer_transportation:z5z6
|
||||
SELECT
|
||||
osm_id, geometry, 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,
|
||||
z_order
|
||||
FROM osm_highway_linestring_gen5
|
||||
WHERE zoom_level BETWEEN 5 AND 6
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_highway_linestring_gen4 -> layer_transportation:z7
|
||||
SELECT
|
||||
osm_id, geometry, highway, NULL AS railway, NULL AS service,
|
||||
NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel,
|
||||
|
@ -42,10 +50,10 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int
|
|||
NULL::boolean AS is_ramp, NULL::boolean AS is_oneway,
|
||||
z_order
|
||||
FROM osm_highway_linestring_gen4
|
||||
WHERE zoom_level BETWEEN 7 AND 8
|
||||
WHERE zoom_level = 7
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_highway_linestring_gen3 -> layer_transportation:z9
|
||||
-- etldoc: osm_highway_linestring_gen3 -> layer_transportation:z8
|
||||
SELECT
|
||||
osm_id, geometry, highway, NULL AS railway, NULL AS service,
|
||||
NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel,
|
||||
|
@ -53,10 +61,10 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int
|
|||
NULL::boolean AS is_ramp, NULL::boolean AS is_oneway,
|
||||
z_order
|
||||
FROM osm_highway_linestring_gen3
|
||||
WHERE zoom_level = 9
|
||||
WHERE zoom_level = 8
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_highway_linestring_gen2 -> layer_transportation:z10
|
||||
-- etldoc: osm_highway_linestring_gen2 -> layer_transportation:z9z10
|
||||
SELECT
|
||||
osm_id, geometry, highway, NULL AS railway, NULL AS service,
|
||||
NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel,
|
||||
|
@ -64,7 +72,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int
|
|||
NULL::boolean AS is_ramp, NULL::boolean AS is_oneway,
|
||||
z_order
|
||||
FROM osm_highway_linestring_gen2
|
||||
WHERE zoom_level = 10
|
||||
WHERE zoom_level BETWEEN 9 AND 10
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_highway_linestring_gen1 -> layer_transportation:z11
|
||||
|
@ -96,7 +104,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int
|
|||
)
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_railway_linestring_gen2 -> layer_transportation:z11"
|
||||
-- etldoc: osm_railway_linestring_gen2 -> layer_transportation:z11
|
||||
SELECT
|
||||
osm_id, geometry, NULL AS highway, railway,
|
||||
service_value(service) AS service,
|
||||
|
@ -105,7 +113,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int
|
|||
WHERE zoom_level = 11 AND (railway='rail' AND service = '')
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_railway_linestring_gen1 -> layer_transportation:z12"
|
||||
-- etldoc: osm_railway_linestring_gen1 -> layer_transportation:z12
|
||||
SELECT
|
||||
osm_id, geometry, NULL AS highway, railway,
|
||||
service_value(service) AS service,
|
||||
|
|
|
@ -11,6 +11,18 @@ generalized_tables:
|
|||
sql_filter: railway='rail' AND service=''
|
||||
tolerance: 20.0
|
||||
|
||||
# etldoc: imposm3 -> osm_highway_linestring_gen6
|
||||
highway_linestring_gen6:
|
||||
source: highway_linestring_gen5
|
||||
sql_filter: highway IN ('motorway') AND NOT is_area
|
||||
tolerance: 2000.0
|
||||
|
||||
# etldoc: imposm3 -> osm_highway_linestring_gen5
|
||||
highway_linestring_gen5:
|
||||
source: highway_linestring_gen4
|
||||
sql_filter: highway IN ('motorway','trunk') AND NOT is_area
|
||||
tolerance: 500.0
|
||||
|
||||
# etldoc: imposm3 -> osm_highway_linestring_gen4
|
||||
highway_linestring_gen4:
|
||||
source: highway_linestring_gen3
|
||||
|
@ -210,7 +222,7 @@ tables:
|
|||
- pedestrian
|
||||
|
||||
# TODO: Future table for joining networks
|
||||
# etldoc: imposm3 -> osm_route_member -> "!!!todo:Networks!!!"
|
||||
# etldoc: imposm3 -> osm_route_member
|
||||
route_member:
|
||||
type: relation_member
|
||||
columns:
|
||||
|
@ -224,6 +236,7 @@ tables:
|
|||
type: member_type
|
||||
- *ref
|
||||
- *network
|
||||
- *name
|
||||
mapping:
|
||||
route:
|
||||
- road
|
||||
|
|
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 56 KiB |
|
@ -4,8 +4,7 @@
|
|||
Read the layer documentation at **http://openmaptiles.org/schema#transportation_name**
|
||||
|
||||
### Mapping Diagram
|
||||

|
||||

|
||||
|
||||
### ETL diagram
|
||||

|
||||
|
||||

|
||||
|
|
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 237 KiB |
|
@ -1,6 +1,6 @@
|
|||
|
||||
-- etldoc: layer_transportation_name[shape=record fillcolor=lightpink, style="rounded,filled",
|
||||
-- etldoc: label="layer_transportation_name | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
|
||||
-- etldoc: label="layer_transportation_name | <z6> z6 | <z7> z7 | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
|
||||
|
||||
CREATE OR REPLACE FUNCTION layer_transportation_name(bbox geometry, zoom_level integer)
|
||||
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, ref text, ref_length int, network text, class text) AS $$
|
||||
|
@ -9,24 +9,35 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, ref tex
|
|||
COALESCE(NULLIF(name_en, ''), NULLIF(name, '')) AS name_en,
|
||||
NULLIF(ref, ''), NULLIF(LENGTH(ref), 0) AS ref_length,
|
||||
--TODO: The road network of the road is not yet implemented
|
||||
NULL::text AS network,
|
||||
case
|
||||
when network is not null
|
||||
then network::text
|
||||
when length(coalesce(ref, ''))>0
|
||||
then 'road'
|
||||
end as network,
|
||||
highway_class(highway) AS class
|
||||
FROM (
|
||||
|
||||
-- etldoc: osm_transportation_name_linestring_gen3 -> layer_transportation_name:z8
|
||||
-- etldoc: osm_transportation_name_linestring_gen4 -> layer_transportation_name:z6
|
||||
SELECT * FROM osm_transportation_name_linestring_gen4
|
||||
WHERE zoom_level = 6
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_transportation_name_linestring_gen3 -> layer_transportation_name:z7
|
||||
SELECT * FROM osm_transportation_name_linestring_gen3
|
||||
WHERE zoom_level = 7
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_transportation_name_linestring_gen2 -> layer_transportation_name:z8
|
||||
SELECT * FROM osm_transportation_name_linestring_gen2
|
||||
WHERE zoom_level = 8
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_transportation_name_linestring_gen2 -> layer_transportation_name:z9
|
||||
SELECT * FROM osm_transportation_name_linestring_gen2
|
||||
WHERE zoom_level = 9
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_transportation_name_linestring_gen1 -> layer_transportation_name:z9
|
||||
-- etldoc: osm_transportation_name_linestring_gen1 -> layer_transportation_name:z10
|
||||
-- etldoc: osm_transportation_name_linestring_gen1 -> layer_transportation_name:z11
|
||||
SELECT * FROM osm_transportation_name_linestring_gen1
|
||||
WHERE zoom_level BETWEEN 10 AND 11
|
||||
WHERE zoom_level BETWEEN 9 AND 11
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z12
|
||||
|
|
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 56 KiB |
|
@ -6,44 +6,67 @@ DROP TRIGGER IF EXISTS trigger_refresh ON transportation_name.updates;
|
|||
-- to allow for nice label rendering
|
||||
-- Because this works well for roads that do not have relations as well
|
||||
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen1 CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen2 CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen3 CASCADE;
|
||||
|
||||
-- etldoc: osm_highway_linestring -> osm_transportation_name_linestring
|
||||
-- etldoc: osm_highway_linestring -> osm_transportation_name_network
|
||||
-- etldoc: osm_route_member -> osm_transportation_name_network
|
||||
CREATE MATERIALIZED VIEW osm_transportation_name_network AS (
|
||||
SELECT
|
||||
hl.geometry,
|
||||
hl.osm_id,
|
||||
hl.name,
|
||||
COALESCE(NULLIF(hl.name_en, ''), hl.name) AS name_en,
|
||||
rm.network_type,
|
||||
CASE
|
||||
WHEN (rm.network_type is not null AND nullif(rm.ref::text, '') is not null)
|
||||
then rm.ref::text
|
||||
else hl.ref
|
||||
end as ref,
|
||||
hl.highway,
|
||||
ROW_NUMBER() OVER(PARTITION BY hl.osm_id
|
||||
ORDER BY rm.network_type) AS "rank",
|
||||
hl.z_order
|
||||
FROM osm_highway_linestring hl
|
||||
left join osm_route_member rm on (rm.member = hl.osm_id)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS osm_transportation_name_network_geometry_idx ON osm_transportation_name_network USING gist(geometry);
|
||||
|
||||
|
||||
-- etldoc: osm_transportation_name_network -> osm_transportation_name_linestring
|
||||
CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
|
||||
SELECT
|
||||
(ST_Dump(geometry)).geom AS geometry,
|
||||
-- NOTE: The osm_id is no longer the original one which can make it difficult
|
||||
-- to lookup road names by OSM ID
|
||||
member_osm_ids[0] AS osm_id,
|
||||
member_osm_ids[1] AS osm_id,
|
||||
member_osm_ids,
|
||||
name,
|
||||
name_en,
|
||||
ref,
|
||||
highway,
|
||||
network_type AS network,
|
||||
z_order
|
||||
FROM (
|
||||
SELECT
|
||||
ST_LineMerge(ST_Collect(geometry)) AS geometry,
|
||||
name,
|
||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||
ref,
|
||||
highway,
|
||||
min(z_order) AS z_order,
|
||||
array_agg(DISTINCT osm_id) AS member_osm_ids
|
||||
FROM osm_highway_linestring
|
||||
-- We only care about highways (not railways) for labeling
|
||||
WHERE (name <> '' OR ref <> '') AND NULLIF(highway, '') IS NOT NULL
|
||||
GROUP BY name, name_en, highway, ref
|
||||
SELECT
|
||||
ST_LineMerge(ST_Collect(geometry)) AS geometry,
|
||||
name,
|
||||
name_en,
|
||||
ref,
|
||||
highway,
|
||||
network_type,
|
||||
min(z_order) AS z_order,
|
||||
array_agg(DISTINCT osm_id) AS member_osm_ids
|
||||
FROM osm_transportation_name_network
|
||||
WHERE ("rank"=1 OR "rank" is null)
|
||||
AND (name <> '' OR ref <> '')
|
||||
AND NULLIF(highway, '') IS NOT NULL
|
||||
group by name, name_en, ref, highway, network_type
|
||||
) AS highway_union
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_geometry_idx ON osm_transportation_name_linestring USING gist(geometry);
|
||||
|
||||
-- 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, member_osm_ids, name, name_en, ref, highway, z_order
|
||||
SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, member_osm_ids, name, name_en, ref, highway, network, z_order
|
||||
FROM osm_transportation_name_linestring
|
||||
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 8000
|
||||
);
|
||||
|
@ -51,7 +74,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_geometry_idx
|
|||
|
||||
-- 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, member_osm_ids, name, name_en, ref, highway, z_order
|
||||
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, member_osm_ids, name, name_en, ref, highway, network, z_order
|
||||
FROM osm_transportation_name_linestring_gen1
|
||||
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 14000
|
||||
);
|
||||
|
@ -59,12 +82,20 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_geometry_idx
|
|||
|
||||
-- etldoc: osm_transportation_name_linestring_gen2 -> osm_transportation_name_linestring_gen3
|
||||
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen3 AS (
|
||||
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, member_osm_ids, name, name_en, ref, highway, z_order
|
||||
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, member_osm_ids, name, name_en, ref, highway, network, z_order
|
||||
FROM osm_transportation_name_linestring_gen2
|
||||
WHERE highway = '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);
|
||||
|
||||
-- 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, member_osm_ids, name, name_en, ref, highway, network, z_order
|
||||
FROM osm_transportation_name_linestring_gen3
|
||||
WHERE highway = '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);
|
||||
|
||||
-- Handle updates
|
||||
|
||||
CREATE SCHEMA IF NOT EXISTS transportation_name;
|
||||
|
@ -85,6 +116,7 @@ CREATE OR REPLACE FUNCTION transportation_name.refresh() RETURNS trigger AS
|
|||
REFRESH MATERIALIZED VIEW osm_transportation_name_linestring_gen1;
|
||||
REFRESH MATERIALIZED VIEW osm_transportation_name_linestring_gen2;
|
||||
REFRESH MATERIALIZED VIEW osm_transportation_name_linestring_gen3;
|
||||
REFRESH MATERIALIZED VIEW osm_transportation_name_linestring_gen4;
|
||||
DELETE FROM transportation_name.updates;
|
||||
RETURN null;
|
||||
END;
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_network CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen1 CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen2 CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen3 CASCADE;
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_transportation_name_linestring_gen4 CASCADE;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'route_network_type') THEN
|
||||
CREATE TYPE route_network_type AS ENUM (
|
||||
'us-interstate', 'us-highway', 'us-state',
|
||||
'ca-transcanada',
|
||||
'gb-motorway', 'gb-trunk'
|
||||
);
|
||||
END IF;
|
||||
END
|
||||
$$
|
||||
;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
BEGIN
|
||||
ALTER TABLE osm_route_member ADD COLUMN network_type route_network_type;
|
||||
EXCEPTION
|
||||
WHEN duplicate_column THEN RAISE NOTICE 'column network_type already exists in network_type.';
|
||||
END;
|
||||
END;
|
||||
$$
|
||||
;
|
||||
|
||||
-- create GBR relations (so we can use it in the same way as other relations)
|
||||
DO $$
|
||||
DECLARE gbr_geom geometry;
|
||||
BEGIN
|
||||
select st_buffer(geometry, 10000) into gbr_geom from ne_10m_admin_0_countries where iso_a2 = 'GB';
|
||||
delete from osm_route_member where network IN('omt-gb-motorway', 'omt-gb-trunk');
|
||||
|
||||
insert into osm_route_member (member, ref, network)
|
||||
(
|
||||
SELECT hw.osm_id, substring(hw.ref from E'^[AM][0-9AM()]+'), 'omt-gb-motorway'
|
||||
from osm_highway_linestring hw
|
||||
where length(hw.ref)>0 and ST_Intersects(hw.geometry, gbr_geom)
|
||||
and hw.highway IN ('motorway')
|
||||
) UNION (
|
||||
SELECT hw.osm_id, substring(hw.ref from E'^[AM][0-9AM()]+'), 'omt-gb-trunk'
|
||||
from osm_highway_linestring hw
|
||||
where length(hw.ref)>0 and ST_Intersects(hw.geometry, gbr_geom)
|
||||
and hw.highway IN ('trunk')
|
||||
)
|
||||
;
|
||||
END $$;
|
||||
|
||||
|
||||
|
||||
-- see http://wiki.openstreetmap.org/wiki/Relation:route#Road_routes
|
||||
UPDATE osm_route_member
|
||||
SET network_type =
|
||||
CASE
|
||||
WHEN network = 'US:I' THEN 'us-interstate'::route_network_type
|
||||
WHEN network = 'US:US' THEN 'us-highway'::route_network_type
|
||||
WHEN network LIKE 'US:__' THEN 'us-state'::route_network_type
|
||||
-- https://en.wikipedia.org/wiki/Trans-Canada_Highway
|
||||
-- TODO: improve hierarchical queries using
|
||||
-- http://www.openstreetmap.org/relation/1307243
|
||||
-- however the relation does not cover the whole Trans-Canada_Highway
|
||||
WHEN
|
||||
(network = 'CA:transcanada') OR
|
||||
(network = 'CA:BC:primary' AND ref IN ('16')) OR
|
||||
(name = 'Yellowhead Highway (AB)' AND ref IN ('16')) OR
|
||||
(network = 'CA:SK' AND ref IN ('16')) OR
|
||||
(network = 'CA:ON:primary' AND ref IN ('17', '417')) OR
|
||||
(name = 'Route Transcanadienne (QC)') OR
|
||||
(network = 'CA:NB' AND ref IN ('2', '16')) OR
|
||||
(network = 'CA:PEI' AND ref IN ('1')) OR
|
||||
(network = 'CA:NS' AND ref IN ('104', '105')) OR
|
||||
(network = 'CA:NL:R' AND ref IN ('1')) OR
|
||||
(name = ' Trans-Canada Highway (Super)')
|
||||
THEN 'ca-transcanada'::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
|
||||
ELSE NULL
|
||||
END
|
||||
;
|
|
@ -10,9 +10,22 @@ layer:
|
|||
fields:
|
||||
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Highways#Names_and_references) value of the highway.
|
||||
name_en: The english `name:en` value if available.
|
||||
ref: The OSM [`ref`](http://wiki.openstreetmap.org/wiki/Key:ref) tag of the motorway or road.
|
||||
ref: The OSM [`ref`](http://wiki.openstreetmap.org/wiki/Key:ref) tag of the motorway or its network.
|
||||
ref_length: Length of the `ref` field. Useful for having a shield icon as background for labeling motorways.
|
||||
network: The OSM [`network`](http://wiki.openstreetmap.org/wiki/Key:network) tag of the road.
|
||||
network:
|
||||
description: |
|
||||
The network type derived mainly from [`network`](http://wiki.openstreetmap.org/wiki/Key:network) tag of the road.
|
||||
See more info about [`us-*`](http://wiki.openstreetmap.org/wiki/Road_signs_in_the_United_States),
|
||||
[`ca-transcanada`](https://en.wikipedia.org/wiki/Trans-Canada_Highway),
|
||||
or [`gb-*`](http://wiki.openstreetmap.org/wiki/United_Kingdom_Tagging_Guidelines#UK_roads).
|
||||
values:
|
||||
- us-interstate
|
||||
- us-highway
|
||||
- us-state
|
||||
- ca-transcanada
|
||||
- gb-motorway
|
||||
- gb-trunk
|
||||
- road (default)
|
||||
class:
|
||||
description: |
|
||||
Distinguish between more and less important roads.
|
||||
|
@ -32,8 +45,9 @@ layer:
|
|||
datasource:
|
||||
geometry_field: geometry
|
||||
srid: 900913
|
||||
query: (SELECT geometry, name, name_en, ref, ref_length, class::text FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
|
||||
query: (SELECT geometry, name, name_en, ref, ref_length, network::text, class::text FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
|
||||
schema:
|
||||
- ./network_type.sql
|
||||
- ./merge_highways.sql
|
||||
- ./layer.sql
|
||||
datasources:
|
||||
|
|
Ładowanie…
Reference in New Issue