kopia lustrzana https://github.com/openmaptiles/openmaptiles
Add ramp, oneway, brunnel to transportation
rodzic
453d64ba17
commit
69b77416be
|
@ -6,14 +6,16 @@ $$ LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
-- etldoc: layer_transportation[shape=record fillcolor=lightpink, style="rounded,filled",
|
-- etldoc: layer_transportation[shape=record fillcolor=lightpink, style="rounded,filled",
|
||||||
-- etldoc: label="<sql> layer_transportation |<z4z7> z4-z7 |<z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ;
|
-- etldoc: label="<sql> layer_transportation |<z4z7> z4-z7 |<z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ;
|
||||||
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 highway_class, subclass text, properties highway_properties) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, class highway_class, subclass text, ramp int, oneway int, brunnel TEXT) AS $$
|
||||||
SELECT
|
SELECT
|
||||||
osm_id, geometry,
|
osm_id, geometry,
|
||||||
to_highway_class(highway) AS class, highway AS subclass,
|
to_highway_class(highway) AS class, highway AS subclass,
|
||||||
to_highway_properties(is_bridge, is_tunnel, is_ford, is_ramp, is_oneway) AS properties
|
CASE WHEN highway_is_link(highway) THEN 1 ELSE is_ramp::int END AS ramp,
|
||||||
|
is_oneway::int AS oneway,
|
||||||
|
to_brunnel(is_bridge, is_tunnel, is_ford) AS brunnel
|
||||||
FROM (
|
FROM (
|
||||||
|
|
||||||
-- etldoc: ne_10m_global_roads -> layer_transportation:z4z7
|
-- etldoc: ne_10m_global_roads -> layer_transportation:z4z6
|
||||||
SELECT
|
SELECT
|
||||||
NULL::bigint AS osm_id, geometry, highway,
|
NULL::bigint AS osm_id, geometry, highway,
|
||||||
FALSE AS is_bridge, FALSE AS is_tunnel, FALSE AS is_ford, FALSE AS is_ramp, FALSE AS is_oneway,
|
FALSE AS is_bridge, FALSE AS is_tunnel, FALSE AS is_ford, FALSE AS is_ramp, FALSE AS is_oneway,
|
||||||
|
@ -22,7 +24,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class highway_class, subclass te
|
||||||
WHERE zoom_level BETWEEN 4 AND 6 AND scalerank <= 1 + zoom_level
|
WHERE zoom_level BETWEEN 4 AND 6 AND scalerank <= 1 + zoom_level
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|
||||||
-- etldoc: osm_transportation_linestring_gen4 -> layer_transportation:z8
|
-- etldoc: osm_transportation_linestring_gen4 -> layer_transportation:z7z8
|
||||||
SELECT osm_id, geometry, highway, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order
|
SELECT osm_id, geometry, highway, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, z_order
|
||||||
FROM osm_transportation_linestring_gen4
|
FROM osm_transportation_linestring_gen4
|
||||||
WHERE zoom_level BETWEEN 7 AND 8
|
WHERE zoom_level BETWEEN 7 AND 8
|
||||||
|
|
|
@ -29,7 +29,7 @@ layer:
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
srid: 900913
|
srid: 900913
|
||||||
query: (SELECT geometry, class::text, subclass, properties::text FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT geometry, class::text, subclass, oneway, ramp, brunnel FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
- ./types.sql
|
- ./types.sql
|
||||||
- ./ne_global_roads.sql
|
- ./ne_global_roads.sql
|
||||||
|
|
|
@ -8,13 +8,14 @@ BEGIN
|
||||||
END
|
END
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
DO $$
|
CREATE OR REPLACE FUNCTION to_brunnel(is_bridge BOOL, is_tunnel BOOL, is_ford BOOL) RETURNS TEXT AS $$
|
||||||
BEGIN
|
SELECT CASE
|
||||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'highway_properties') THEN
|
WHEN is_bridge THEN 'bridge'
|
||||||
CREATE TYPE highway_properties AS ENUM ('bridge:oneway', 'tunnel:oneway', 'ramp', 'ford', 'bridge', 'tunnel', 'oneway');
|
WHEN is_tunnel THEN 'tunnel'
|
||||||
END IF;
|
WHEN is_ford THEN 'ford'
|
||||||
END
|
ELSE NULL
|
||||||
$$;
|
END;
|
||||||
|
$$ LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION to_highway_class(highway TEXT) RETURNS highway_class AS $$
|
CREATE OR REPLACE FUNCTION to_highway_class(highway TEXT) RETURNS highway_class AS $$
|
||||||
SELECT CASE
|
SELECT CASE
|
||||||
|
@ -29,16 +30,3 @@ CREATE OR REPLACE FUNCTION to_highway_class(highway TEXT) RETURNS highway_class
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE SQL IMMUTABLE STRICT;
|
$$ LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION to_highway_properties(is_bridge boolean, is_tunnel boolean, is_ford boolean, is_ramp boolean, is_oneway boolean) RETURNS highway_properties AS $$
|
|
||||||
SELECT CASE
|
|
||||||
WHEN is_bridge AND is_oneway THEN 'bridge:oneway'::highway_properties
|
|
||||||
WHEN is_tunnel AND is_oneway THEN 'tunnel:oneway'::highway_properties
|
|
||||||
WHEN is_ramp THEN 'ramp'::highway_properties
|
|
||||||
WHEN is_ford THEN 'ford'::highway_properties
|
|
||||||
WHEN is_bridge THEN 'bridge'::highway_properties
|
|
||||||
WHEN is_tunnel THEN 'tunnel'::highway_properties
|
|
||||||
WHEN is_oneway THEN 'oneway'::highway_properties
|
|
||||||
ELSE NULL
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE SQL IMMUTABLE;
|
|
||||||
|
|
Ładowanie…
Reference in New Issue