31 lines
786 B
PL/PgSQL
31 lines
786 B
PL/PgSQL
CREATE OR REPLACE VIEW urban_z4 AS (
|
|
SELECT geom, scalerank
|
|
FROM ne_50m_urban_areas
|
|
WHERE scalerank <= 2
|
|
);
|
|
|
|
CREATE OR REPLACE VIEW urban_z5 AS (
|
|
SELECT geom, scalerank
|
|
FROM ne_50m_urban_areas
|
|
);
|
|
|
|
CREATE OR REPLACE VIEW urban_z6 AS (
|
|
SELECT geom, scalerank
|
|
FROM ne_10m_urban_areas
|
|
);
|
|
|
|
CREATE OR REPLACE FUNCTION layer_urban(bbox geometry, zoom_level int)
|
|
RETURNS TABLE(geom geometry, scalerank int) AS $$
|
|
SELECT geom, scalerank FROM (
|
|
SELECT * FROM urban_z4
|
|
WHERE zoom_level = 4
|
|
UNION ALL
|
|
SELECT * FROM urban_z5
|
|
WHERE zoom_level = 5
|
|
UNION ALL
|
|
SELECT * FROM urban_z6
|
|
WHERE zoom_level >= 6 AND scalerank-1 <= zoom_level
|
|
) AS zoom_levels
|
|
WHERE geom && bbox;
|
|
$$ LANGUAGE SQL IMMUTABLE;
|