diff --git a/layers/country/country.yaml b/layers/country/country.yaml deleted file mode 100644 index 4577fbe4..00000000 --- a/layers/country/country.yaml +++ /dev/null @@ -1,8 +0,0 @@ -layer: - id: "country" - description: country - buffer_size: 128 - datasource: - query: (SELECT * FROM layer_country(!bbox!, z(!scale_denominator!))) AS t -schema: - - ./country.sql diff --git a/layers/country/country.sql b/layers/place/country.sql similarity index 80% rename from layers/country/country.sql rename to layers/place/country.sql index 41e2d39d..384a9edf 100644 --- a/layers/country/country.sql +++ b/layers/place/country.sql @@ -1,5 +1,5 @@ CREATE TABLE IF NOT EXISTS country_label AS ( - SELECT topoint(geom) AS geom, + SELECT topoint(geom) AS geometry, name, adm0_a3, abbrev, postal, scalerank, labelrank, @@ -7,7 +7,7 @@ CREATE TABLE IF NOT EXISTS country_label AS ( FROM ne_10m_admin_0_countries WHERE scalerank <= 1 ); -CREATE INDEX IF NOT EXISTS country_label_geom_idx ON country_label USING gist(geom); +CREATE INDEX IF NOT EXISTS country_label_geometry_idx ON country_label USING gist(geometry); CREATE OR REPLACE VIEW country_z0 AS ( SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 2 @@ -30,8 +30,8 @@ CREATE OR REPLACE VIEW country_z5 AS ( ); 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 $$ - SELECT geom, name, abbrev, postal, scalerank::int, labelrank::int FROM ( +RETURNS TABLE(geometry geometry, name text, abbrev text, postal text, scalerank int, labelrank int) AS $$ + SELECT geometry, name, abbrev, postal, scalerank::int, labelrank::int FROM ( SELECT * FROM country_z0 WHERE zoom_level = 0 UNION ALL @@ -47,6 +47,6 @@ RETURNS TABLE(geom geometry, name text, abbrev text, postal text, scalerank int, SELECT * FROM country_z5 WHERE zoom_level >= 5 ) AS t - WHERE geom && bbox + WHERE geometry && bbox ORDER BY scalerank ASC, labelrank ASC, length(name) ASC; $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/place/place.sql b/layers/place/place.sql index 0d7c2008..2e0ef613 100644 --- a/layers/place/place.sql +++ b/layers/place/place.sql @@ -76,6 +76,10 @@ CREATE OR REPLACE VIEW place_z13 AS ( CREATE OR REPLACE FUNCTION layer_place(bbox geometry, zoom_level int, pixel_width numeric) RETURNS TABLE(geometry geometry, name text, place text, scalerank int) AS $$ + SELECT geometry, name, 'country' AS place, scalerank FROM layer_country(bbox, zoom_level) + UNION ALL + SELECT geometry, name, 'state' AS place, scalerank FROM layer_state(bbox, zoom_level) + UNION ALL SELECT geometry, name, place, scalerank FROM ( SELECT geometry, name, place, scalerank, row_number() OVER ( @@ -85,6 +89,7 @@ RETURNS TABLE(geometry geometry, name text, place text, scalerank int) AS $$ length(name) DESC ) AS gridrank FROM ( + --Cities SELECT * FROM place_z2 WHERE zoom_level = 2 UNION ALL diff --git a/layers/place/place.yaml b/layers/place/place.yaml index 539d3ea7..896b715d 100644 --- a/layers/place/place.yaml +++ b/layers/place/place.yaml @@ -4,8 +4,11 @@ layer: [OSM Places](http://wiki.openstreetmap.org/wiki/Key:place) buffer_size: 128 datasource: + geometry_field: geometry query: (SELECT * FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t schema: + - ./country.sql + - ./state.sql - ./place.sql datasources: - type: imposm3 diff --git a/layers/state/state.sql b/layers/place/state.sql similarity index 80% rename from layers/state/state.sql rename to layers/place/state.sql index a68f40a6..23a63a88 100644 --- a/layers/state/state.sql +++ b/layers/place/state.sql @@ -7,7 +7,7 @@ END; $$ LANGUAGE plpgsql IMMUTABLE; CREATE TABLE IF NOT EXISTS state_label AS ( - SELECT topoint(geom) AS geom, + SELECT topoint(geom) AS geometry, name_local, fix_win1252_shp_encoding(name) AS name_en, abbrev, postal, scalerank, labelrank, @@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS state_label AS ( WHERE type IN ('State', 'Avtonomnyy Okrug', 'Sheng', 'Estado') AND scalerank <= 3 AND labelrank <= 2 ); -CREATE INDEX IF NOT EXISTS state_label_geom_idx ON state_label USING gist(geom); +CREATE INDEX IF NOT EXISTS state_label_geometry_idx ON state_label USING gist(geometry); CREATE OR REPLACE VIEW state_z3 AS ( SELECT * FROM state_label @@ -28,8 +28,8 @@ CREATE OR REPLACE VIEW state_z4 AS ( ); CREATE OR REPLACE FUNCTION layer_state(bbox geometry, zoom_level int) -RETURNS TABLE(geom geometry, name text, name_en text, abbrev text, postal text, scalerank int, labelrank int) AS $$ - SELECT geom, +RETURNS TABLE(geometry geometry, name text, name_en text, abbrev text, postal text, scalerank int, labelrank int) AS $$ + SELECT geometry, COALESCE(name_local, name_en) AS name_local, name_en, abbrev, postal, scalerank::int, labelrank::int FROM ( SELECT * FROM state_z3 @@ -38,6 +38,6 @@ RETURNS TABLE(geom geometry, name text, name_en text, abbrev text, postal text, SELECT * FROM state_z4 WHERE zoom_level >= 4 ) AS t - WHERE geom && bbox + WHERE geometry && bbox ORDER BY scalerank ASC, labelrank ASC, shape_area DESC; $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/state/state.yaml b/layers/state/state.yaml deleted file mode 100644 index b71e45f9..00000000 --- a/layers/state/state.yaml +++ /dev/null @@ -1,8 +0,0 @@ -layer: - id: "state" - description: state - buffer_size: 128 - datasource: - query: (SELECT * FROM layer_state(!bbox!, z(!scale_denominator!))) AS t -schema: - - ./state.sql diff --git a/openmaptiles.yaml b/openmaptiles.yaml index 1058faba..8571fc3c 100644 --- a/openmaptiles.yaml +++ b/openmaptiles.yaml @@ -3,8 +3,6 @@ tileset: - layers/boundary/boundary.yaml - layers/highway/highway.yaml - layers/building/building.yaml - - layers/state/state.yaml - - layers/country/country.yaml - layers/place/place.yaml #- layers/rail/rail.yaml - layers/water/water.yaml