diff --git a/layers/place/layer.sql b/layers/place/layer.sql index 9aba9b5..9ec9779 100644 --- a/layers/place/layer.sql +++ b/layers/place/layer.sql @@ -3,7 +3,9 @@ -- etldoc: label="layer_place | z0-3| z4-7| z8-11| z12-z14+" ] ; CREATE OR REPLACE FUNCTION layer_place(bbox geometry, zoom_level int, pixel_width numeric) -RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, class text, "rank" int, capital INT) AS $$ +RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, + name_de text, tags hstore, class text, "rank" int, capital INT, iso_a2 + TEXT) AS $$ -- etldoc: osm_continent_point -> layer_place:z0_3 SELECT @@ -11,7 +13,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'continent' AS class, 1 AS "rank", NULL::int AS capital + 'continent' AS class, 1 AS "rank", NULL::int AS capital, + NULL::text AS iso_a2 FROM osm_continent_point WHERE geometry && bbox AND zoom_level < 4 UNION ALL @@ -25,7 +28,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'country' AS class, "rank", NULL::int AS capital + 'country' AS class, "rank", NULL::int AS capital, + iso3166_1_alpha_2 AS iso_a2 FROM osm_country_point WHERE geometry && bbox AND "rank" <= zoom_level + 1 AND name <> '' UNION ALL @@ -39,7 +43,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'state' AS class, "rank", NULL::int AS capital + 'state' AS class, "rank", NULL::int AS capital, + NULL::text AS iso_a2 FROM osm_state_point WHERE geometry && bbox AND name <> '' AND @@ -55,7 +60,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'island' AS class, 7 AS "rank", NULL::int AS capital + 'island' AS class, 7 AS "rank", NULL::int AS capital, + NULL::text AS iso_a2 FROM osm_island_point WHERE zoom_level >= 12 AND geometry && bbox @@ -68,7 +74,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de COALESCE(NULLIF(name_en, ''), name) AS name_en, COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de, tags, - 'island' AS class, island_rank(area) AS "rank", NULL::int AS capital + 'island' AS class, island_rank(area) AS "rank", NULL::int AS capital, + NULL::text AS iso_a2 FROM osm_island_polygon WHERE geometry && bbox AND ((zoom_level = 8 AND island_rank(area) <= 3) @@ -83,7 +90,8 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de SELECT osm_id, geometry, name, name_en, name_de, tags, - place::text AS class, "rank", capital + place::text AS class, "rank", capital, + NULL::text AS iso_a2 FROM layer_city(bbox, zoom_level, pixel_width) ORDER BY "rank" ASC $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/place/place.yaml b/layers/place/place.yaml index edb8cfa..ba5312d 100644 --- a/layers/place/place.yaml +++ b/layers/place/place.yaml @@ -34,6 +34,11 @@ layer: - suburb - neighbourhood - isolated_dwelling + iso_a2: + description: | + Two-letter country code [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). + Original value of the + [`country_code_iso3166_1_alpha_2`](http://wiki.openstreetmap.org/wiki/Tag:place%3Dcountry) tag. rank: description: | Countries, states and the most important cities all have a @@ -53,7 +58,7 @@ layer: buffer_size: 256 datasource: geometry_field: geometry - query: (SELECT geometry, name, name_en, name_de, {name_languages}, class, rank, capital FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t + query: (SELECT geometry, name, name_en, name_de, {name_languages}, class, rank, capital, iso_a2 FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t schema: - ./types.sql - ./capital.sql