Refactor layer code to use OSM

This commit is contained in:
lukasmartinelli
2016-10-29 10:56:58 +02:00
parent 4086c515ed
commit d9d3b96dc7
5 changed files with 24 additions and 97 deletions

View File

@@ -1,14 +1,14 @@
CREATE OR REPLACE FUNCTION layer_city(bbox geometry, zoom_level int, pixel_width numeric)
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class city_class, scalerank int) AS $$
SELECT osm_id, geometry, name, name_en, place, scalerank
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class city_class, "rank" int) AS $$
SELECT osm_id, geometry, name, name_en, place, "rank"
FROM osm_city_point
WHERE geometry && bbox
AND ((zoom_level = 2 AND scalerank = 0)
OR (zoom_level BETWEEN 3 AND 7 AND scalerank < zoom_level)
AND ((zoom_level = 2 AND "rank" = 0)
OR (zoom_level BETWEEN 3 AND 7 AND "rank" < zoom_level)
)
UNION ALL
SELECT osm_id, geometry, name, name_en, place, scalerank FROM (
SELECT osm_id, geometry, name, name_en, place, scalerank,
SELECT osm_id, geometry, name, name_en, place, "rank" FROM (
SELECT osm_id, geometry, name, name_en, place, "rank",
row_number() OVER (
PARTITION BY LabelGrid(geometry, 150 * pixel_width)
ORDER BY place ASC NULLS LAST,