Show country labels earlier

pull/24/head
lukasmartinelli 2016-10-09 17:33:52 +02:00
rodzic db44f00811
commit a9ff2cc04e
1 zmienionych plików z 10 dodań i 3 usunięć

Wyświetl plik

@ -9,14 +9,18 @@ CREATE TABLE IF NOT EXISTS country_label AS (
); );
CREATE INDEX IF NOT EXISTS country_label_geom_idx ON country_label USING gist(geom); CREATE INDEX IF NOT EXISTS country_label_geom_idx ON country_label USING gist(geom);
CREATE OR REPLACE VIEW country_z1 AS ( CREATE OR REPLACE VIEW country_z0 AS (
SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 2 SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 2
); );
CREATE OR REPLACE VIEW country_z2 AS ( CREATE OR REPLACE VIEW country_z1 AS (
SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 3 SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 3
); );
CREATE OR REPLACE VIEW country_z2 AS (
SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 4
);
CREATE OR REPLACE VIEW country_z3 AS ( CREATE OR REPLACE VIEW country_z3 AS (
SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0
); );
@ -28,6 +32,9 @@ CREATE OR REPLACE VIEW country_z5 AS (
CREATE OR REPLACE FUNCTION layer_country(bbox geometry, zoom_level int) CREATE OR REPLACE FUNCTION layer_country(bbox geometry, zoom_level int)
RETURNS TABLE(geom geometry, name text, abbrev text, postal text, scalerank int, labelrank int) AS $$ RETURNS TABLE(geom geometry, name text, abbrev text, postal text, scalerank int, labelrank int) AS $$
SELECT geom, name, abbrev, postal, scalerank::int, labelrank::int FROM ( SELECT geom, name, abbrev, postal, scalerank::int, labelrank::int FROM (
SELECT * FROM country_z0
WHERE zoom_level = 0
UNION ALL
SELECT * FROM country_z1 SELECT * FROM country_z1
WHERE zoom_level = 1 WHERE zoom_level = 1
UNION ALL UNION ALL
@ -41,5 +48,5 @@ RETURNS TABLE(geom geometry, name text, abbrev text, postal text, scalerank int,
WHERE zoom_level >= 5 WHERE zoom_level >= 5
) AS t ) AS t
WHERE geom && bbox WHERE geom && bbox
ORDER BY scalerank, labelrank, length(name); ORDER BY scalerank ASC, labelrank ASC, length(name) ASC;
$$ LANGUAGE SQL IMMUTABLE; $$ LANGUAGE SQL IMMUTABLE;