kopia lustrzana https://github.com/openmaptiles/openmaptiles
commit
94b58f5f21
|
@ -42,3 +42,13 @@ CREATE OR REPLACE FUNCTION service_value(service TEXT) RETURNS TEXT AS $$
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE SQL IMMUTABLE STRICT;
|
$$ LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
|
|
||||||
|
-- Limit surface to only the most important values to ensure
|
||||||
|
-- we always know the values of surface
|
||||||
|
CREATE OR REPLACE FUNCTION surface_value(surface TEXT) RETURNS TEXT AS $$
|
||||||
|
SELECT CASE
|
||||||
|
WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'concrete', 'concrete:lanes', 'concrete:plates', 'metal', 'paving_stones', 'sett', 'unhewn_cobblestone', 'wood') THEN 'paved'
|
||||||
|
WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'gravel_turf', 'ground', 'ice', 'mud', 'pebblestone', 'salt', 'sand', 'snow', 'woodchips') THEN 'unpaved'
|
||||||
|
ELSE NULL
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
|
|
|
@ -8,7 +8,7 @@ $$ LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
CREATE OR REPLACE FUNCTION layer_transportation(bbox geometry, zoom_level int)
|
CREATE OR REPLACE FUNCTION layer_transportation(bbox geometry, zoom_level int)
|
||||||
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text,
|
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text,
|
||||||
ramp int, oneway int, brunnel TEXT, service TEXT, layer INT, level INT,
|
ramp int, oneway int, brunnel TEXT, service TEXT, layer INT, level INT,
|
||||||
indoor INT) AS $$
|
indoor INT, surface TEXT) AS $$
|
||||||
SELECT
|
SELECT
|
||||||
osm_id, geometry,
|
osm_id, geometry,
|
||||||
CASE
|
CASE
|
||||||
|
@ -33,7 +33,8 @@ indoor INT) AS $$
|
||||||
NULLIF(service, '') AS service,
|
NULLIF(service, '') AS service,
|
||||||
NULLIF(layer, 0) AS layer,
|
NULLIF(layer, 0) AS layer,
|
||||||
"level",
|
"level",
|
||||||
CASE WHEN indoor=TRUE THEN 1 ELSE NULL END as indoor
|
CASE WHEN indoor=TRUE THEN 1 ELSE NULL END as indoor,
|
||||||
|
NULLIF(surface, '') AS surface
|
||||||
FROM (
|
FROM (
|
||||||
-- etldoc: osm_transportation_merge_linestring_gen7 -> layer_transportation:z4
|
-- etldoc: osm_transportation_merge_linestring_gen7 -> layer_transportation:z4
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -44,6 +45,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
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::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
|
NULL AS surface,
|
||||||
z_order
|
z_order
|
||||||
FROM osm_transportation_merge_linestring_gen7
|
FROM osm_transportation_merge_linestring_gen7
|
||||||
WHERE zoom_level = 4
|
WHERE zoom_level = 4
|
||||||
|
@ -58,7 +60,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
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::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_transportation_merge_linestring_gen6
|
FROM osm_transportation_merge_linestring_gen6
|
||||||
WHERE zoom_level = 5
|
WHERE zoom_level = 5
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -72,7 +74,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
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::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_transportation_merge_linestring_gen5
|
FROM osm_transportation_merge_linestring_gen5
|
||||||
WHERE zoom_level = 6
|
WHERE zoom_level = 6
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -86,7 +88,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
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::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_transportation_merge_linestring_gen4
|
FROM osm_transportation_merge_linestring_gen4
|
||||||
WHERE zoom_level = 7
|
WHERE zoom_level = 7
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -100,7 +102,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
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::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_transportation_merge_linestring_gen3
|
FROM osm_transportation_merge_linestring_gen3
|
||||||
WHERE zoom_level = 8
|
WHERE zoom_level = 8
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -115,7 +117,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_highway_linestring_gen2
|
FROM osm_highway_linestring_gen2
|
||||||
WHERE zoom_level BETWEEN 9 AND 10
|
WHERE zoom_level BETWEEN 9 AND 10
|
||||||
AND st_length(geometry)>zres(11)
|
AND st_length(geometry)>zres(11)
|
||||||
|
@ -130,7 +132,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_highway_linestring_gen1
|
FROM osm_highway_linestring_gen1
|
||||||
WHERE zoom_level = 11
|
WHERE zoom_level = 11
|
||||||
AND st_length(geometry)>zres(12)
|
AND st_length(geometry)>zres(12)
|
||||||
|
@ -151,6 +153,7 @@ indoor INT) AS $$
|
||||||
CASE WHEN highway IN ('footway', 'steps') THEN indoor
|
CASE WHEN highway IN ('footway', 'steps') THEN indoor
|
||||||
ELSE NULL::boolean
|
ELSE NULL::boolean
|
||||||
END AS indoor,
|
END AS indoor,
|
||||||
|
surface_value(surface) AS "surface",
|
||||||
z_order
|
z_order
|
||||||
FROM osm_highway_linestring
|
FROM osm_highway_linestring
|
||||||
WHERE NOT is_area AND (
|
WHERE NOT is_area AND (
|
||||||
|
@ -182,7 +185,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
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::int AS layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL as surface, z_order
|
||||||
FROM osm_railway_linestring_gen5
|
FROM osm_railway_linestring_gen5
|
||||||
WHERE zoom_level = 8
|
WHERE zoom_level = 8
|
||||||
AND railway='rail' AND service = '' and usage='main'
|
AND railway='rail' AND service = '' and usage='main'
|
||||||
|
@ -197,7 +200,7 @@ indoor INT) AS $$
|
||||||
NULL::boolean AS is_ford,
|
NULL::boolean AS is_ford,
|
||||||
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
NULL::boolean AS is_ramp, NULL::int AS is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_railway_linestring_gen4
|
FROM osm_railway_linestring_gen4
|
||||||
WHERE zoom_level = 9
|
WHERE zoom_level = 9
|
||||||
AND railway='rail' AND service = '' and usage='main'
|
AND railway='rail' AND service = '' and usage='main'
|
||||||
|
@ -210,7 +213,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_railway_linestring_gen3
|
FROM osm_railway_linestring_gen3
|
||||||
WHERE zoom_level = 10
|
WHERE zoom_level = 10
|
||||||
AND railway IN ('rail', 'narrow_gauge') AND service = ''
|
AND railway IN ('rail', 'narrow_gauge') AND service = ''
|
||||||
|
@ -223,7 +226,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL as surface, z_order
|
||||||
FROM osm_railway_linestring_gen2
|
FROM osm_railway_linestring_gen2
|
||||||
WHERE zoom_level = 11
|
WHERE zoom_level = 11
|
||||||
AND railway IN ('rail', 'narrow_gauge', 'light_rail') AND service = ''
|
AND railway IN ('rail', 'narrow_gauge', 'light_rail') AND service = ''
|
||||||
|
@ -236,7 +239,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL as surface, z_order
|
||||||
FROM osm_railway_linestring_gen1
|
FROM osm_railway_linestring_gen1
|
||||||
WHERE zoom_level = 12
|
WHERE zoom_level = 12
|
||||||
AND railway IN ('rail', 'narrow_gauge', 'light_rail') AND service = ''
|
AND railway IN ('rail', 'narrow_gauge', 'light_rail') AND service = ''
|
||||||
|
@ -250,7 +253,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL as surface, z_order
|
||||||
FROM osm_railway_linestring
|
FROM osm_railway_linestring
|
||||||
WHERE zoom_level = 13
|
WHERE zoom_level = 13
|
||||||
AND railway IN ('rail', 'narrow_gauge', 'light_rail') AND service = ''
|
AND railway IN ('rail', 'narrow_gauge', 'light_rail') AND service = ''
|
||||||
|
@ -264,7 +267,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_aerialway_linestring_gen1
|
FROM osm_aerialway_linestring_gen1
|
||||||
WHERE zoom_level = 12
|
WHERE zoom_level = 12
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -277,7 +280,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_aerialway_linestring
|
FROM osm_aerialway_linestring
|
||||||
WHERE zoom_level >= 13
|
WHERE zoom_level >= 13
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -289,7 +292,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_shipway_linestring_gen2
|
FROM osm_shipway_linestring_gen2
|
||||||
WHERE zoom_level = 11
|
WHERE zoom_level = 11
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -301,7 +304,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_shipway_linestring_gen1
|
FROM osm_shipway_linestring_gen1
|
||||||
WHERE zoom_level = 12
|
WHERE zoom_level = 12
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -314,7 +317,7 @@ indoor INT) AS $$
|
||||||
NULL AS public_transport, service_value(service) AS service,
|
NULL AS public_transport, service_value(service) AS service,
|
||||||
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_shipway_linestring
|
FROM osm_shipway_linestring
|
||||||
WHERE zoom_level >= 13
|
WHERE zoom_level >= 13
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -334,7 +337,7 @@ indoor INT) AS $$
|
||||||
END AS is_bridge, FALSE AS is_tunnel, FALSE AS is_ford,
|
END AS is_bridge, FALSE AS is_tunnel, FALSE AS is_ford,
|
||||||
FALSE AS is_ramp, FALSE::int AS is_oneway, man_made,
|
FALSE AS is_ramp, FALSE::int AS is_oneway, man_made,
|
||||||
layer, NULL::int AS level, NULL::boolean AS indoor,
|
layer, NULL::int AS level, NULL::boolean AS indoor,
|
||||||
z_order
|
NULL AS surface, z_order
|
||||||
FROM osm_highway_polygon
|
FROM osm_highway_polygon
|
||||||
-- We do not want underground pedestrian areas for now
|
-- We do not want underground pedestrian areas for now
|
||||||
WHERE zoom_level >= 13
|
WHERE zoom_level >= 13
|
||||||
|
|
|
@ -133,6 +133,10 @@ man_made_field: &man_made
|
||||||
z_order_field: &z_order
|
z_order_field: &z_order
|
||||||
name: z_order
|
name: z_order
|
||||||
type: wayzorder
|
type: wayzorder
|
||||||
|
surface_field: &surface
|
||||||
|
key: surface
|
||||||
|
name: surface
|
||||||
|
type: string
|
||||||
|
|
||||||
tables:
|
tables:
|
||||||
# etldoc: imposm3 -> osm_highway_linestring
|
# etldoc: imposm3 -> osm_highway_linestring
|
||||||
|
@ -168,6 +172,7 @@ tables:
|
||||||
- *usage
|
- *usage
|
||||||
- *public_transport
|
- *public_transport
|
||||||
- *man_made
|
- *man_made
|
||||||
|
- *surface
|
||||||
mapping:
|
mapping:
|
||||||
highway:
|
highway:
|
||||||
- motorway
|
- motorway
|
||||||
|
|
|
@ -105,10 +105,16 @@ layer:
|
||||||
value of [`indoor`](http://wiki.openstreetmap.org/wiki/Key:indoor) tag.
|
value of [`indoor`](http://wiki.openstreetmap.org/wiki/Key:indoor) tag.
|
||||||
values:
|
values:
|
||||||
- 1
|
- 1
|
||||||
|
surface:
|
||||||
|
description: |
|
||||||
|
Values of [`surface`](https://wiki.openstreetmap.org/wiki/Key:surface) tag devided into 2 groups `paved` (paved, asphalt, cobblestone, concrete, concrete:lanes, concrete:plates, metal, paving_stones, sett, unhewn_cobblestone, wood) and `unpaved` (unpaved, compacted, dirt, earth, fine_gravel, grass, grass_paver, gravel, gravel_turf, ground, ice, mud, pebblestone, salt, sand, snow, woodchips).
|
||||||
|
values:
|
||||||
|
- paved
|
||||||
|
- unpaved
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
srid: 900913
|
srid: 900913
|
||||||
query: (SELECT geometry, class, subclass, oneway, ramp, brunnel, service, layer, level, indoor FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT geometry, class, subclass, oneway, ramp, brunnel, service, layer, level, indoor, surface FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
- ./class.sql
|
- ./class.sql
|
||||||
- ./update_transportation_merge.sql
|
- ./update_transportation_merge.sql
|
||||||
|
|
Ładowanie…
Reference in New Issue