From e792b8486c1c67cde6f2b27792ec9afbd7942eba Mon Sep 17 00:00:00 2001 From: lukasmartinelli Date: Sun, 9 Oct 2016 17:53:09 +0200 Subject: [PATCH] Show boundaries with high admin level later --- schema/layers/boundary.sql | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/schema/layers/boundary.sql b/schema/layers/boundary.sql index 38b46fb..9128c4e 100644 --- a/schema/layers/boundary.sql +++ b/schema/layers/boundary.sql @@ -76,16 +76,29 @@ CREATE OR REPLACE VIEW boundary_z8 AS ( SELECT way AS geom, level AS admin_level, NULL AS scalerank, NULL AS class FROM admin_line - WHERE level <= 4 + WHERE level <= 4 AND ST_Length(way) > 10000 ); CREATE OR REPLACE VIEW boundary_z10 AS ( + SELECT way AS geom, level AS admin_level, + NULL AS scalerank, NULL AS class + FROM admin_line + WHERE level <= 6 +); + +CREATE OR REPLACE VIEW boundary_z11 AS ( SELECT way AS geom, level AS admin_level, NULL AS scalerank, NULL AS class FROM admin_line WHERE level <= 8 ); +CREATE OR REPLACE VIEW boundary_z12 AS ( + SELECT way AS geom, level AS admin_level, + NULL AS scalerank, NULL AS class + FROM admin_line +); + CREATE OR REPLACE FUNCTION layer_boundary (bbox geometry, zoom_level int) RETURNS TABLE(geom geometry, admin_level int, scalerank int, class text) AS $$ SELECT geom, admin_level, scalerank::int, class FROM ( @@ -111,12 +124,12 @@ RETURNS TABLE(geom geometry, admin_level int, scalerank int, class text) AS $$ FROM boundary_z10 WHERE geom && bbox AND zoom_level = 10 UNION ALL SELECT ST_Simplify(geom, 100) AS geom, admin_level, scalerank, class - FROM boundary_z10 WHERE geom && bbox AND zoom_level = 11 + FROM boundary_z11 WHERE geom && bbox AND zoom_level = 11 UNION ALL SELECT ST_Simplify(geom, 50) AS geom, admin_level, scalerank, class - FROM boundary_z10 WHERE geom && bbox AND zoom_level = 12 + FROM boundary_z12 WHERE geom && bbox AND zoom_level = 12 UNION ALL SELECT geom, admin_level, scalerank, class - FROM boundary_z10 WHERE geom && bbox AND zoom_level >= 13 + FROM boundary_z12 WHERE geom && bbox AND zoom_level >= 13 ) AS zoom_levels; $$ LANGUAGE SQL IMMUTABLE;