Show boundaries with high admin level later

This commit is contained in:
lukasmartinelli 2016-10-09 17:53:09 +02:00
parent 89eb088131
commit e792b8486c

View File

@ -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;