Filter places by grid rank

pull/24/head
lukasmartinelli 2016-10-08 15:23:19 +02:00
rodzic 201defe496
commit 7a8e16ec8e
2 zmienionych plików z 56 dodań i 10 usunięć

Wyświetl plik

@ -302,7 +302,21 @@ Layer:
port: 5432
srid: ''
table: |-
( SELECT *
(
SELECT * FROM (
SELECT geom, name, class, rank, scalerank,
row_number() OVER (
PARTITION BY LabelGrid(geom, 150 * !pixel_width!)
ORDER BY scalerank ASC NULLS LAST,
CASE class
WHEN 'settlement' THEN 10
WHEN 'subregion' THEN 5
WHEN 'locality' THEN 2 ELSE 1
END DESC,
rank DESC,
population DESC NULLS LAST,
length(name) DESC
) AS gridrank
FROM (
SELECT * FROM place_z3
WHERE z(!scale_denominator!) = 3
@ -320,20 +334,37 @@ Layer:
WHERE z(!scale_denominator!) = 7
UNION ALL
SELECT * FROM place_z8
WHERE z(!scale_denominator!) = 8
WHERE z(!scale_denominator!) BETWEEN 8 AND 9
UNION ALL
SELECT * FROM place_z10
WHERE z(!scale_denominator!) = 10
UNION ALL
SELECT * FROM place_z12
WHERE z(!scale_denominator!) BETWEEN 11 AND 12
UNION ALL
SELECT * FROM place_z13
WHERE z(!scale_denominator!) >= 13
) AS place
WHERE geom && !bbox!
) AS ranked_place
WHERE z(!scale_denominator!) <= 7 OR
(z(!scale_denominator!) = 8 AND gridrank <= 4) OR
(z(!scale_denominator!) = 9 AND gridrank <= 9) OR
(z(!scale_denominator!) = 10 AND gridrank <= 9) OR
(z(!scale_denominator!) = 11 AND gridrank <= 9) OR
(z(!scale_denominator!) = 12 AND gridrank <= 9) OR
z(!scale_denominator!) >= 13
) AS t
type: postgis
user: osm
description: Buildings
fields:
class: String
gridrank: Number
name: String
rank: String
scalerank: Number
properties:
"buffer-size": 4
"buffer-size": 64
srs: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over
maxzoom: 14
minzoom: 0

Wyświetl plik

@ -1,32 +1,47 @@
CREATE OR REPLACE VIEW place_z3 AS (
SELECT geom, name, 'settlement' AS class, 'city' AS rank, scalerank
SELECT geom, name, 'settlement' AS class, 'city'::place AS rank, scalerank, pop_min AS population
FROM ne_10m_populated_places
WHERE scalerank <= 2
);
CREATE OR REPLACE VIEW place_z4 AS (
SELECT geom, name, 'settlement' AS class, 'city' AS rank, scalerank
SELECT geom, name, 'settlement' AS class, 'city'::place AS rank, scalerank, pop_min AS population
FROM ne_10m_populated_places
WHERE scalerank <= 5
);
CREATE OR REPLACE VIEW place_z5 AS (
SELECT geom, name, 'settlement' AS class, 'city' AS rank, scalerank
SELECT geom, name, 'settlement' AS class, 'city'::place AS rank, scalerank, pop_min AS population
FROM ne_10m_populated_places
WHERE scalerank <= 6
);
CREATE OR REPLACE VIEW place_z6 AS (
SELECT geom, name, 'settlement' AS class, 'city' AS rank, scalerank
SELECT geom, name, 'settlement' AS class, 'city'::place AS rank, scalerank, pop_min AS population
FROM ne_10m_populated_places
WHERE scalerank <= 7
);
CREATE OR REPLACE VIEW place_z7 AS (
SELECT geom, name, 'settlement' AS class, 'city' AS rank, scalerank FROM ne_10m_populated_places
SELECT geom, name, 'settlement' AS class, 'city'::place AS rank, scalerank, pop_min AS population
FROM ne_10m_populated_places
);
CREATE OR REPLACE VIEW place_z8 AS (
SELECT way AS geom, name, class::text, rank::text, NULL::integer AS scalerank FROM place_point
SELECT way AS geom, name, class::text, rank, NULL::integer AS scalerank, population FROM place_point
WHERE rank IN ('city', 'town')
);
CREATE OR REPLACE VIEW place_z10 AS (
SELECT way AS geom, name, class::text, rank, NULL::integer AS scalerank, population FROM place_point
WHERE rank IN ('city', 'town', 'village') OR class='subregion'
);
CREATE OR REPLACE VIEW place_z11 AS (
SELECT way AS geom, name, class::text, rank, NULL::integer AS scalerank, population FROM place_point
WHERE class IN ('subregion', 'settlement')
);
CREATE OR REPLACE VIEW place_z13 AS (
SELECT way AS geom, name, class::text, rank, NULL::integer AS scalerank, population FROM place_point
);