From 52933f5cfc96b46d5699432b40ace21896e81e4a Mon Sep 17 00:00:00 2001 From: MartinMikita Date: Wed, 29 Mar 2017 20:49:20 +0200 Subject: [PATCH] Separated zoom level 5 and 6, with different simplify tolerance and length of geometry. --- layers/transportation/layer.sql | 19 ++++++++++++---- layers/transportation/merge_highways.sql | 29 ++++++++++++++++++------ 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/layers/transportation/layer.sql b/layers/transportation/layer.sql index 7a05f44f..d7014eba 100644 --- a/layers/transportation/layer.sql +++ b/layers/transportation/layer.sql @@ -20,7 +20,18 @@ 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: osm_transportation_merge_linestring_gen6 -> layer_transportation:z4 + -- etldoc: osm_transportation_merge_linestring_gen7 -> layer_transportation:z4 + 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_transportation_merge_linestring_gen7 + WHERE zoom_level = 4 + UNION ALL + + -- etldoc: osm_transportation_merge_linestring_gen6 -> layer_transportation:z5 SELECT osm_id, geometry, highway, NULL AS railway, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, @@ -28,10 +39,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_transportation_merge_linestring_gen6 - WHERE zoom_level = 4 + WHERE zoom_level = 5 UNION ALL - -- etldoc: osm_transportation_merge_linestring_gen5 -> layer_transportation:z5z6 + -- etldoc: osm_transportation_merge_linestring_gen5 -> layer_transportation:z6 SELECT osm_id, geometry, highway, NULL AS railway, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, @@ -39,7 +50,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_transportation_merge_linestring_gen5 - WHERE zoom_level BETWEEN 5 AND 6 + WHERE zoom_level = 6 UNION ALL -- etldoc: osm_highway_linestring_gen4 -> layer_transportation:z7 diff --git a/layers/transportation/merge_highways.sql b/layers/transportation/merge_highways.sql index ce119f4b..f7ad11c5 100644 --- a/layers/transportation/merge_highways.sql +++ b/layers/transportation/merge_highways.sql @@ -1,6 +1,7 @@ DROP MATERIALIZED VIEW IF EXISTS osm_transportation_merge_linestring CASCADE; DROP MATERIALIZED VIEW IF EXISTS osm_transportation_merge_linestring_gen5 CASCADE; DROP MATERIALIZED VIEW IF EXISTS osm_transportation_merge_linestring_gen6 CASCADE; +DROP MATERIALIZED VIEW IF EXISTS osm_transportation_merge_linestring_gen7 CASCADE; DROP TRIGGER IF EXISTS trigger_flag2 ON osm_highway_linestring; @@ -39,8 +40,8 @@ CREATE MATERIALIZED VIEW osm_transportation_merge_linestring AS ( group by highway ) AS highway_union ); -CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_geometry_idx ON osm_transportation_merge_linestring USING gist(geometry); --- Improve performance of the sql below +CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_geometry_idx + ON osm_transportation_merge_linestring USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_highway_partial_idx ON osm_transportation_merge_linestring(highway) WHERE highway IN ('motorway','trunk'); @@ -51,19 +52,32 @@ CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen5 AS ( FROM osm_transportation_merge_linestring WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 100 ); -CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_geometry_idx ON osm_transportation_merge_linestring_gen5 USING gist(geometry); --- Improve performance of the sql below +CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_geometry_idx + ON osm_transportation_merge_linestring_gen5 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_highway_partial_idx ON osm_transportation_merge_linestring_gen5(highway) - WHERE highway IN ('motorway'); + WHERE highway IN ('motorway', 'trunk'); -- etldoc: osm_transportation_merge_linestring_gen5 -> osm_transportation_merge_linestring_gen6 CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen6 AS ( - SELECT ST_Simplify(geometry, 2000) AS geometry, osm_id, highway, z_order + SELECT ST_Simplify(geometry, 1000) AS geometry, osm_id, highway, z_order FROM osm_transportation_merge_linestring_gen5 + WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 500 +); +CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_geometry_idx + ON osm_transportation_merge_linestring_gen6 USING gist(geometry); +CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_highway_partial_idx + ON osm_transportation_merge_linestring_gen6(highway) + WHERE highway IN ('motorway'); + +-- etldoc: osm_transportation_merge_linestring_gen6 -> osm_transportation_merge_linestring_gen7 +CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen7 AS ( + SELECT ST_Simplify(geometry, 2000) AS geometry, osm_id, highway, z_order + FROM osm_transportation_merge_linestring_gen6 WHERE highway IN ('motorway') AND ST_Length(geometry) > 1000 ); -CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_geometry_idx ON osm_transportation_merge_linestring_gen6 USING gist(geometry); +CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen7_geometry_idx + ON osm_transportation_merge_linestring_gen7 USING gist(geometry); -- Handle updates @@ -85,6 +99,7 @@ CREATE OR REPLACE FUNCTION transportation.refresh() RETURNS trigger AS REFRESH MATERIALIZED VIEW osm_transportation_merge_linestring; REFRESH MATERIALIZED VIEW osm_transportation_merge_linestring_gen5; REFRESH MATERIALIZED VIEW osm_transportation_merge_linestring_gen6; + REFRESH MATERIALIZED VIEW osm_transportation_merge_linestring_gen7; DELETE FROM transportation.updates; RETURN null; END;