kopia lustrzana https://github.com/openmaptiles/openmaptiles
Multilinguality (#279)
Improve multilinguality: names in 57 languages, name:latin, name:nonlatin, name_int. Fixes #211 #252 #80. See #279 for more info.pull/281/head
rodzic
8ff5d10e8b
commit
51bc8fad35
2
Makefile
2
Makefile
|
@ -83,7 +83,7 @@ psql-pg-stat-reset:
|
||||||
|
|
||||||
forced-clean-sql:
|
forced-clean-sql:
|
||||||
docker-compose run --rm import-osm /usr/src/app/psql.sh -c "DROP SCHEMA IF EXISTS public CASCADE ; CREATE SCHEMA IF NOT EXISTS public; "
|
docker-compose run --rm import-osm /usr/src/app/psql.sh -c "DROP SCHEMA IF EXISTS public CASCADE ; CREATE SCHEMA IF NOT EXISTS public; "
|
||||||
docker-compose run --rm import-osm /usr/src/app/psql.sh -c "CREATE EXTENSION hstore; CREATE EXTENSION postgis; CREATE EXTENSION pg_stat_statements;"
|
docker-compose run --rm import-osm /usr/src/app/psql.sh -c "CREATE EXTENSION hstore; CREATE EXTENSION postgis; CREATE EXTENSION unaccent; CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION osml10n; CREATE EXTENSION pg_stat_statements;"
|
||||||
docker-compose run --rm import-osm /usr/src/app/psql.sh -c "GRANT ALL ON SCHEMA public TO public;COMMENT ON SCHEMA public IS 'standard public schema';"
|
docker-compose run --rm import-osm /usr/src/app/psql.sh -c "GRANT ALL ON SCHEMA public TO public;COMMENT ON SCHEMA public IS 'standard public schema';"
|
||||||
|
|
||||||
pgclimb-list-views:
|
pgclimb-list-views:
|
||||||
|
|
|
@ -134,7 +134,7 @@ docker-compose run generate-vectortiles
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
All code in this repository is under the [BSD license](./LICENSE.md) and the cartography decisions encoded in the schema and SQL are licensed under [CC-BY](./LICENSE.md).
|
All code in this repository is under the [BSD license](./LICENSE.md) and the cartography decisions encoded in the schema and SQL are licensed under [CC-BY](./LICENSE.md).
|
||||||
|
|
||||||
Products or services using maps derived from OpenMapTiles schema need to visibly credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to http://openmaptiles.org/. Exceptions to attribution requirement can be granted on request.
|
Products or services using maps derived from OpenMapTiles schema need to visibly credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to http://openmaptiles.org/. Exceptions to attribution requirement can be granted on request.
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ volumes:
|
||||||
cache:
|
cache:
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: "openmaptiles/postgis:2.5"
|
image: "openmaptiles/postgis:2.8"
|
||||||
volumes:
|
volumes:
|
||||||
- pgdata:/var/lib/postgresql/data
|
- pgdata:/var/lib/postgresql/data
|
||||||
networks:
|
networks:
|
||||||
|
@ -68,14 +68,14 @@ services:
|
||||||
- ./build:/mapping
|
- ./build:/mapping
|
||||||
- cache:/cache
|
- cache:/cache
|
||||||
import-sql:
|
import-sql:
|
||||||
image: "openmaptiles/import-sql:0.1"
|
image: "openmaptiles/import-sql:0.5"
|
||||||
env_file: .env
|
env_file: .env
|
||||||
networks:
|
networks:
|
||||||
- postgres_conn
|
- postgres_conn
|
||||||
volumes:
|
volumes:
|
||||||
- ./build:/sql
|
- ./build:/sql
|
||||||
openmaptiles-tools:
|
openmaptiles-tools:
|
||||||
image: "openmaptiles/openmaptiles-tools:0.5"
|
image: "openmaptiles/openmaptiles-tools:0.6"
|
||||||
env_file: .env
|
env_file: .env
|
||||||
networks:
|
networks:
|
||||||
- postgres_conn
|
- postgres_conn
|
||||||
|
|
|
@ -3,13 +3,14 @@
|
||||||
-- etldoc: style="rounded,filled", label="layer_mountain_peak | <z7_> z7+" ] ;
|
-- etldoc: style="rounded,filled", label="layer_mountain_peak | <z7_> z7+" ] ;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_mountain_peak(bbox geometry, zoom_level integer, pixel_width numeric)
|
CREATE OR REPLACE FUNCTION layer_mountain_peak(bbox geometry, zoom_level integer, pixel_width numeric)
|
||||||
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, ele int, ele_ft int, "rank" int) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, ele int, ele_ft int, "rank" int) AS $$
|
||||||
-- etldoc: osm_peak_point -> layer_mountain_peak:z7_
|
-- etldoc: osm_peak_point -> layer_mountain_peak:z7_
|
||||||
SELECT osm_id, geometry, name, name_en, name_de, ele::int, ele_ft::int, rank::int
|
SELECT osm_id, geometry, name, name_en, name_de, tags, ele::int, ele_ft::int, rank::int
|
||||||
FROM (
|
FROM (
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
substring(ele from E'^(-?\\d+)(\\D|$)')::int AS ele,
|
substring(ele from E'^(-?\\d+)(\\D|$)')::int AS ele,
|
||||||
round(substring(ele from E'^(-?\\d+)(\\D|$)')::int*3.2808399)::int AS ele_ft,
|
round(substring(ele from E'^(-?\\d+)(\\D|$)')::int*3.2808399)::int AS ele_ft,
|
||||||
row_number() OVER (
|
row_number() OVER (
|
||||||
|
|
|
@ -17,6 +17,8 @@ tables:
|
||||||
- name: name_de
|
- name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
- name: ele
|
- name: ele
|
||||||
key: ele
|
key: ele
|
||||||
type: string
|
type: string
|
||||||
|
|
|
@ -14,8 +14,9 @@ layer:
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
srid: 900913
|
srid: 900913
|
||||||
query: (SELECT osm_id, geometry, name, name_en, name_de, ele, ele_ft, rank FROM layer_mountain_peak(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
|
query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, ele, ele_ft, rank FROM layer_mountain_peak(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
|
||||||
schema:
|
schema:
|
||||||
|
- ./name.sql
|
||||||
- ./layer.sql
|
- ./layer.sql
|
||||||
datasources:
|
datasources:
|
||||||
- type: imposm3
|
- type: imposm3
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
update osm_peak_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
END $$;
|
|
@ -4,10 +4,11 @@
|
||||||
|
|
||||||
-- etldoc: osm_city_point -> layer_city:z2_14
|
-- etldoc: osm_city_point -> layer_city:z2_14
|
||||||
CREATE OR REPLACE FUNCTION layer_city(bbox geometry, zoom_level int, pixel_width numeric)
|
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, name_de text, place city_place, "rank" int, capital int) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, place city_place, "rank" int, capital int) AS $$
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
place, "rank", normalize_capital_level(capital) AS capital
|
place, "rank", normalize_capital_level(capital) AS capital
|
||||||
FROM osm_city_point
|
FROM osm_city_point
|
||||||
WHERE geometry && bbox
|
WHERE geometry && bbox
|
||||||
|
@ -18,6 +19,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
place,
|
place,
|
||||||
COALESCE("rank", gridrank + 10),
|
COALESCE("rank", gridrank + 10),
|
||||||
normalize_capital_level(capital) AS capital
|
normalize_capital_level(capital) AS capital
|
||||||
|
@ -25,6 +27,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
place, "rank", capital,
|
place, "rank", capital,
|
||||||
row_number() OVER (
|
row_number() OVER (
|
||||||
PARTITION BY LabelGrid(geometry, 128 * pixel_width)
|
PARTITION BY LabelGrid(geometry, 128 * pixel_width)
|
||||||
|
|
|
@ -3,13 +3,14 @@
|
||||||
-- etldoc: label="layer_place | <z0_3> z0-3|<z4_7> z4-7|<z8_11> z8-11| <z12_14> z12-z14+" ] ;
|
-- etldoc: label="layer_place | <z0_3> z0-3|<z4_7> z4-7|<z8_11> z8-11| <z12_14> z12-z14+" ] ;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_place(bbox geometry, zoom_level int, pixel_width numeric)
|
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, 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) AS $$
|
||||||
|
|
||||||
-- etldoc: osm_continent_point -> layer_place:z0_3
|
-- etldoc: osm_continent_point -> layer_place:z0_3
|
||||||
SELECT
|
SELECT
|
||||||
osm_id, geometry, name,
|
osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
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
|
||||||
FROM osm_continent_point
|
FROM osm_continent_point
|
||||||
WHERE geometry && bbox AND zoom_level < 4
|
WHERE geometry && bbox AND zoom_level < 4
|
||||||
|
@ -23,6 +24,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
osm_id, geometry, name,
|
osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
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
|
||||||
FROM osm_country_point
|
FROM osm_country_point
|
||||||
WHERE geometry && bbox AND "rank" <= zoom_level + 1 AND name <> ''
|
WHERE geometry && bbox AND "rank" <= zoom_level + 1 AND name <> ''
|
||||||
|
@ -36,6 +38,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
osm_id, geometry, name,
|
osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
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
|
||||||
FROM osm_state_point
|
FROM osm_state_point
|
||||||
WHERE geometry && bbox AND
|
WHERE geometry && bbox AND
|
||||||
|
@ -51,6 +54,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
osm_id, geometry, name,
|
osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
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
|
||||||
FROM osm_island_point
|
FROM osm_island_point
|
||||||
WHERE zoom_level >= 12
|
WHERE zoom_level >= 12
|
||||||
|
@ -63,6 +67,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
osm_id, geometry, name,
|
osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
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
|
||||||
FROM osm_island_polygon
|
FROM osm_island_polygon
|
||||||
WHERE geometry && bbox AND
|
WHERE geometry && bbox AND
|
||||||
|
@ -77,6 +82,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
-- etldoc: layer_city -> layer_place:z12_14
|
-- etldoc: layer_city -> layer_place:z12_14
|
||||||
SELECT
|
SELECT
|
||||||
osm_id, geometry, name, name_en, name_de,
|
osm_id, geometry, name, name_en, name_de,
|
||||||
|
tags,
|
||||||
place::text AS class, "rank", capital
|
place::text AS class, "rank", capital
|
||||||
FROM layer_city(bbox, zoom_level, pixel_width)
|
FROM layer_city(bbox, zoom_level, pixel_width)
|
||||||
ORDER BY "rank" ASC
|
ORDER BY "rank" ASC
|
||||||
|
|
|
@ -6,38 +6,10 @@ name_en_field: &name_en
|
||||||
name: name_en
|
name: name_en
|
||||||
key: name:en
|
key: name:en
|
||||||
type: string
|
type: string
|
||||||
name_fr_field: &name_fr
|
|
||||||
name: name_fr
|
|
||||||
key: name:fr
|
|
||||||
type: string
|
|
||||||
name_de_field: &name_de
|
name_de_field: &name_de
|
||||||
name: name_de
|
name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
name_es_field: &name_es
|
|
||||||
name: name_es
|
|
||||||
key: name:es
|
|
||||||
type: string
|
|
||||||
name_pt_field: &name_pt
|
|
||||||
name: name_pt
|
|
||||||
key: name:pt
|
|
||||||
type: string
|
|
||||||
name_ru_field: &name_ru
|
|
||||||
name: name_ru
|
|
||||||
key: name:ru
|
|
||||||
type: string
|
|
||||||
name_zh_field: &name_zh
|
|
||||||
name: name_zh
|
|
||||||
key: name:zh
|
|
||||||
type: string
|
|
||||||
name_ar_field: &name_ar
|
|
||||||
name: name_ar
|
|
||||||
key: name:ar
|
|
||||||
type: string
|
|
||||||
name_ja_field: &name_ja
|
|
||||||
name: name_ja
|
|
||||||
key: name:ja
|
|
||||||
type: string
|
|
||||||
rank_field: &rank
|
rank_field: &rank
|
||||||
name: rank
|
name: rank
|
||||||
key: rank
|
key: rank
|
||||||
|
@ -56,6 +28,8 @@ tables:
|
||||||
- *name
|
- *name
|
||||||
- *name_en
|
- *name_en
|
||||||
- *name_de
|
- *name_de
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
filters:
|
filters:
|
||||||
require:
|
require:
|
||||||
name: ["__any__"]
|
name: ["__any__"]
|
||||||
|
@ -74,14 +48,9 @@ tables:
|
||||||
- *name
|
- *name
|
||||||
- *name_en
|
- *name_en
|
||||||
- *name_de
|
- *name_de
|
||||||
- *name_fr
|
|
||||||
- *name_es
|
|
||||||
- *name_pt
|
|
||||||
- *name_ru
|
|
||||||
- *name_zh
|
|
||||||
- *name_ar
|
|
||||||
- *name_ja
|
|
||||||
- *rank
|
- *rank
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
filters:
|
filters:
|
||||||
require:
|
require:
|
||||||
name: ["__any__"]
|
name: ["__any__"]
|
||||||
|
@ -104,13 +73,8 @@ tables:
|
||||||
- *name
|
- *name
|
||||||
- *name_en
|
- *name_en
|
||||||
- *name_de
|
- *name_de
|
||||||
- *name_fr
|
- name: tags
|
||||||
- *name_es
|
type: hstore_tags
|
||||||
- *name_pt
|
|
||||||
- *name_ru
|
|
||||||
- *name_zh
|
|
||||||
- *name_ar
|
|
||||||
- *name_ja
|
|
||||||
- *rank
|
- *rank
|
||||||
filters:
|
filters:
|
||||||
require:
|
require:
|
||||||
|
@ -130,13 +94,8 @@ tables:
|
||||||
- *name
|
- *name
|
||||||
- *name_en
|
- *name_en
|
||||||
- *name_de
|
- *name_de
|
||||||
- *name_fr
|
- name: tags
|
||||||
- *name_es
|
type: hstore_tags
|
||||||
- *name_pt
|
|
||||||
- *name_ru
|
|
||||||
- *name_zh
|
|
||||||
- *name_ar
|
|
||||||
- *name_ja
|
|
||||||
- *rank
|
- *rank
|
||||||
filters:
|
filters:
|
||||||
require:
|
require:
|
||||||
|
@ -156,13 +115,8 @@ tables:
|
||||||
- *name
|
- *name
|
||||||
- *name_en
|
- *name_en
|
||||||
- *name_de
|
- *name_de
|
||||||
- *name_fr
|
- name: tags
|
||||||
- *name_es
|
type: hstore_tags
|
||||||
- *name_pt
|
|
||||||
- *name_ru
|
|
||||||
- *name_zh
|
|
||||||
- *name_ar
|
|
||||||
- *name_ja
|
|
||||||
- name: is_in_country
|
- name: is_in_country
|
||||||
key: is_in:country
|
key: is_in:country
|
||||||
type: string
|
type: string
|
||||||
|
@ -191,13 +145,8 @@ tables:
|
||||||
- *name
|
- *name
|
||||||
- *name_en
|
- *name_en
|
||||||
- *name_de
|
- *name_de
|
||||||
- *name_fr
|
- name: tags
|
||||||
- *name_es
|
type: hstore_tags
|
||||||
- *name_pt
|
|
||||||
- *name_ru
|
|
||||||
- *name_zh
|
|
||||||
- *name_ar
|
|
||||||
- *name_ja
|
|
||||||
- name: place
|
- name: place
|
||||||
key: place
|
key: place
|
||||||
type: string
|
type: string
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
update osm_continent_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_country_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_island_polygon SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_island_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_state_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_city_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
END $$;
|
|
@ -53,8 +53,9 @@ layer:
|
||||||
buffer_size: 256
|
buffer_size: 256
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
query: (SELECT geometry, name, name_en, name_de, 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 FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
|
||||||
schema:
|
schema:
|
||||||
|
- ./name.sql
|
||||||
- ./types.sql
|
- ./types.sql
|
||||||
- ./capital.sql
|
- ./capital.sql
|
||||||
- ./city.sql
|
- ./city.sql
|
||||||
|
|
|
@ -3,10 +3,11 @@
|
||||||
-- etldoc: label="layer_poi | <z14_> z14+" ] ;
|
-- etldoc: label="layer_poi | <z14_> z14+" ] ;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_poi(bbox geometry, zoom_level integer, pixel_width numeric)
|
CREATE OR REPLACE FUNCTION layer_poi(bbox geometry, zoom_level integer, pixel_width numeric)
|
||||||
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, class text, subclass text, "rank" int) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, class text, subclass text, "rank" int) AS $$
|
||||||
SELECT osm_id, geometry, NULLIF(name, '') AS name,
|
SELECT osm_id, geometry, NULLIF(name, '') AS name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
poi_class(subclass, mapping_key) AS class, subclass,
|
poi_class(subclass, mapping_key) AS class, subclass,
|
||||||
row_number() OVER (
|
row_number() OVER (
|
||||||
PARTITION BY LabelGrid(geometry, 100 * pixel_width)
|
PARTITION BY LabelGrid(geometry, 100 * pixel_width)
|
||||||
|
|
|
@ -315,6 +315,8 @@ tables:
|
||||||
- name: name_de
|
- name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
- name: subclass
|
- name: subclass
|
||||||
type: mapping_value
|
type: mapping_value
|
||||||
- name: mapping_key
|
- name: mapping_key
|
||||||
|
@ -354,6 +356,8 @@ tables:
|
||||||
- name: name_de
|
- name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
- name: subclass
|
- name: subclass
|
||||||
type: mapping_value
|
type: mapping_value
|
||||||
- name: mapping_key
|
- name: mapping_key
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
update osm_poi_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_poi_polygon SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
END $$;
|
|
@ -34,9 +34,10 @@ layer:
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
srid: 900913
|
srid: 900913
|
||||||
query: (SELECT geometry, name, name_en, name_de, class, subclass, rank FROM layer_poi(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
|
query: (SELECT geometry, name, name_en, name_de, {name_languages}, class, subclass, rank FROM layer_poi(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
|
||||||
schema:
|
schema:
|
||||||
- ./poi_update.sql
|
- ./poi_update.sql
|
||||||
|
- ./name.sql
|
||||||
- ./poi_polygon_update.sql
|
- ./poi_polygon_update.sql
|
||||||
- ./class.sql
|
- ./class.sql
|
||||||
- ./layer.sql
|
- ./layer.sql
|
||||||
|
|
|
@ -3,11 +3,12 @@
|
||||||
-- etldoc: label="layer_transportation_name | <z6> z6 | <z7> z7 | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
|
-- etldoc: label="layer_transportation_name | <z6> z6 | <z7> z7 | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_transportation_name(bbox geometry, zoom_level integer)
|
CREATE OR REPLACE FUNCTION layer_transportation_name(bbox geometry, zoom_level integer)
|
||||||
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, ref text, ref_length int, network text, class text) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, ref text, ref_length int, network text, class text) AS $$
|
||||||
SELECT osm_id, geometry,
|
SELECT osm_id, geometry,
|
||||||
NULLIF(name, '') AS name,
|
NULLIF(name, '') AS name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
NULLIF(ref, ''), NULLIF(LENGTH(ref), 0) AS ref_length,
|
NULLIF(ref, ''), NULLIF(LENGTH(ref), 0) AS ref_length,
|
||||||
--TODO: The road network of the road is not yet implemented
|
--TODO: The road network of the road is not yet implemented
|
||||||
case
|
case
|
||||||
|
|
|
@ -13,9 +13,9 @@ CREATE MATERIALIZED VIEW osm_transportation_name_network AS (
|
||||||
SELECT
|
SELECT
|
||||||
hl.geometry,
|
hl.geometry,
|
||||||
hl.osm_id,
|
hl.osm_id,
|
||||||
hl.name,
|
CASE WHEN length(hl.name)>15 THEN osml10n_street_abbrev_all(hl.name) ELSE hl.name END AS "name",
|
||||||
hl.name_en,
|
CASE WHEN length(hl.name_en)>15 THEN osml10n_street_abbrev_en(hl.name_en) ELSE hl.name_en END AS "name_en",
|
||||||
hl.name_de,
|
CASE WHEN length(hl.name_de)>15 THEN osml10n_street_abbrev_de(hl.name_de) ELSE hl.name_de END AS "name_de",
|
||||||
rm.network_type,
|
rm.network_type,
|
||||||
CASE
|
CASE
|
||||||
WHEN (rm.network_type is not null AND nullif(rm.ref::text, '') is not null)
|
WHEN (rm.network_type is not null AND nullif(rm.ref::text, '') is not null)
|
||||||
|
@ -40,6 +40,9 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
|
||||||
name,
|
name,
|
||||||
name_en,
|
name_en,
|
||||||
name_de,
|
name_de,
|
||||||
|
get_basic_names(delete_empty_keys(hstore(ARRAY['name',name,'name:en',name_en,'name:de',name_de])), geometry)
|
||||||
|
|| delete_empty_keys(hstore(ARRAY['name',name,'name:en',name_en,'name:de',name_de]))
|
||||||
|
AS "tags",
|
||||||
ref,
|
ref,
|
||||||
highway,
|
highway,
|
||||||
network_type AS network,
|
network_type AS network,
|
||||||
|
@ -69,7 +72,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_highway_partial_id
|
||||||
|
|
||||||
-- etldoc: osm_transportation_name_linestring -> osm_transportation_name_linestring_gen1
|
-- etldoc: osm_transportation_name_linestring -> osm_transportation_name_linestring_gen1
|
||||||
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen1 AS (
|
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen1 AS (
|
||||||
SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, name, name_en, name_de, ref, highway, network, z_order
|
SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
|
||||||
FROM osm_transportation_name_linestring
|
FROM osm_transportation_name_linestring
|
||||||
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 8000
|
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 8000
|
||||||
);
|
);
|
||||||
|
@ -81,7 +84,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_highway_parti
|
||||||
|
|
||||||
-- etldoc: osm_transportation_name_linestring_gen1 -> osm_transportation_name_linestring_gen2
|
-- etldoc: osm_transportation_name_linestring_gen1 -> osm_transportation_name_linestring_gen2
|
||||||
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen2 AS (
|
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen2 AS (
|
||||||
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, name, name_en, name_de, ref, highway, network, z_order
|
SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
|
||||||
FROM osm_transportation_name_linestring_gen1
|
FROM osm_transportation_name_linestring_gen1
|
||||||
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 14000
|
WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 14000
|
||||||
);
|
);
|
||||||
|
@ -93,7 +96,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_highway_parti
|
||||||
|
|
||||||
-- etldoc: osm_transportation_name_linestring_gen2 -> osm_transportation_name_linestring_gen3
|
-- etldoc: osm_transportation_name_linestring_gen2 -> osm_transportation_name_linestring_gen3
|
||||||
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen3 AS (
|
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen3 AS (
|
||||||
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, name, name_en, name_de, ref, highway, network, z_order
|
SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
|
||||||
FROM osm_transportation_name_linestring_gen2
|
FROM osm_transportation_name_linestring_gen2
|
||||||
WHERE highway = 'motorway' AND ST_Length(geometry) > 20000
|
WHERE highway = 'motorway' AND ST_Length(geometry) > 20000
|
||||||
);
|
);
|
||||||
|
@ -105,7 +108,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_highway_parti
|
||||||
|
|
||||||
-- etldoc: osm_transportation_name_linestring_gen3 -> osm_transportation_name_linestring_gen4
|
-- etldoc: osm_transportation_name_linestring_gen3 -> osm_transportation_name_linestring_gen4
|
||||||
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen4 AS (
|
CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen4 AS (
|
||||||
SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, name, name_en, name_de, ref, highway, network, z_order
|
SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order
|
||||||
FROM osm_transportation_name_linestring_gen3
|
FROM osm_transportation_name_linestring_gen3
|
||||||
WHERE highway = 'motorway' AND ST_Length(geometry) > 20000
|
WHERE highway = 'motorway' AND ST_Length(geometry) > 20000
|
||||||
);
|
);
|
||||||
|
|
|
@ -46,7 +46,7 @@ layer:
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
srid: 900913
|
srid: 900913
|
||||||
query: (SELECT geometry, name, name_en, name_de, ref, ref_length, network::text, class::text FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT geometry, name, name_en, name_de, {name_languages}, ref, ref_length, network::text, class::text FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
- ./network_type.sql
|
- ./network_type.sql
|
||||||
- ./merge_highways.sql
|
- ./merge_highways.sql
|
||||||
|
|
|
@ -58,6 +58,8 @@ tables:
|
||||||
- name: name_de
|
- name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
- name: natural
|
- name: natural
|
||||||
key: natural
|
key: natural
|
||||||
type: string
|
type: string
|
||||||
|
|
|
@ -3,12 +3,13 @@
|
||||||
-- etldoc: label="layer_water_name | <z0_8> z0_8 | <z9_13> z9_13 | <z14_> z14+" ] ;
|
-- etldoc: label="layer_water_name | <z0_8> z0_8 | <z9_13> z9_13 | <z14_> z14+" ] ;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_water_name(bbox geometry, zoom_level integer)
|
CREATE OR REPLACE FUNCTION layer_water_name(bbox geometry, zoom_level integer)
|
||||||
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, class text) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, tags hstore, class text) AS $$
|
||||||
-- etldoc: osm_water_lakeline -> layer_water_name:z9_13
|
-- etldoc: osm_water_lakeline -> layer_water_name:z9_13
|
||||||
-- etldoc: osm_water_lakeline -> layer_water_name:z14_
|
-- etldoc: osm_water_lakeline -> layer_water_name:z14_
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
'lake'::text AS class
|
'lake'::text AS class
|
||||||
FROM osm_water_lakeline
|
FROM osm_water_lakeline
|
||||||
WHERE geometry && bbox
|
WHERE geometry && bbox
|
||||||
|
@ -20,6 +21,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
'lake'::text AS class
|
'lake'::text AS class
|
||||||
FROM osm_water_point
|
FROM osm_water_point
|
||||||
WHERE geometry && bbox AND (
|
WHERE geometry && bbox AND (
|
||||||
|
@ -33,6 +35,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de
|
||||||
SELECT osm_id, geometry, name,
|
SELECT osm_id, geometry, name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags,
|
||||||
place::text AS class
|
place::text AS class
|
||||||
FROM osm_marine_point
|
FROM osm_marine_point
|
||||||
WHERE geometry && bbox AND (
|
WHERE geometry && bbox AND (
|
||||||
|
|
|
@ -16,6 +16,8 @@ tables:
|
||||||
- name: name_de
|
- name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
- name: place
|
- name: place
|
||||||
key: place
|
key: place
|
||||||
type: string
|
type: string
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
update osm_marine_point SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
update osm_water_polygon SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
END $$;
|
|
@ -8,7 +8,7 @@ DROP MATERIALIZED VIEW IF EXISTS osm_water_lakeline CASCADE;
|
||||||
CREATE MATERIALIZED VIEW osm_water_lakeline AS (
|
CREATE MATERIALIZED VIEW osm_water_lakeline AS (
|
||||||
SELECT wp.osm_id,
|
SELECT wp.osm_id,
|
||||||
ll.wkb_geometry AS geometry,
|
ll.wkb_geometry AS geometry,
|
||||||
name, name_en, name_de, ST_Area(wp.geometry) AS area
|
name, name_en, name_de, tags, ST_Area(wp.geometry) AS area
|
||||||
FROM osm_water_polygon AS wp
|
FROM osm_water_polygon AS wp
|
||||||
INNER JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
|
INNER JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
|
||||||
WHERE wp.name <> ''
|
WHERE wp.name <> ''
|
||||||
|
|
|
@ -18,8 +18,9 @@ layer:
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
srid: 900913
|
srid: 900913
|
||||||
query: (SELECT geometry, name, name_en, name_de, class FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT geometry, name, name_en, name_de, {name_languages}, class FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
|
- ./name.sql
|
||||||
- ./merge_marine_rank.sql
|
- ./merge_marine_rank.sql
|
||||||
- ./water_lakeline.sql
|
- ./water_lakeline.sql
|
||||||
- ./water_point.sql
|
- ./water_point.sql
|
||||||
|
|
|
@ -8,7 +8,7 @@ DROP MATERIALIZED VIEW IF EXISTS osm_water_point CASCADE;
|
||||||
CREATE MATERIALIZED VIEW osm_water_point AS (
|
CREATE MATERIALIZED VIEW osm_water_point AS (
|
||||||
SELECT
|
SELECT
|
||||||
wp.osm_id, ST_PointOnSurface(wp.geometry) AS geometry,
|
wp.osm_id, ST_PointOnSurface(wp.geometry) AS geometry,
|
||||||
wp.name, wp.name_en, wp.name_de, ST_Area(wp.geometry) AS area
|
wp.name, wp.name_en, wp.name_de, wp.tags, ST_Area(wp.geometry) AS area
|
||||||
FROM osm_water_polygon AS wp
|
FROM osm_water_polygon AS wp
|
||||||
LEFT JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
|
LEFT JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
|
||||||
WHERE ll.osm_id IS NULL AND wp.name <> ''
|
WHERE ll.osm_id IS NULL AND wp.name <> ''
|
||||||
|
|
|
@ -35,6 +35,8 @@ tables:
|
||||||
- name: name_de
|
- name: name_de
|
||||||
key: name:de
|
key: name:de
|
||||||
type: string
|
type: string
|
||||||
|
- name: tags
|
||||||
|
type: hstore_tags
|
||||||
mapping:
|
mapping:
|
||||||
waterway:
|
waterway:
|
||||||
- stream
|
- stream
|
||||||
|
|
|
@ -22,21 +22,21 @@ CREATE INDEX IF NOT EXISTS osm_waterway_linestring_name_partial_idx
|
||||||
CREATE MATERIALIZED VIEW osm_important_waterway_linestring AS (
|
CREATE MATERIALIZED VIEW osm_important_waterway_linestring AS (
|
||||||
SELECT
|
SELECT
|
||||||
(ST_Dump(geometry)).geom AS geometry,
|
(ST_Dump(geometry)).geom AS geometry,
|
||||||
name, name_en, name_de
|
name, name_en, name_de, tags
|
||||||
FROM (
|
FROM (
|
||||||
SELECT
|
SELECT
|
||||||
ST_LineMerge(ST_Union(geometry)) AS geometry,
|
ST_LineMerge(ST_Union(geometry)) AS geometry,
|
||||||
name, name_en, name_de
|
name, name_en, name_de, tags
|
||||||
FROM osm_waterway_linestring
|
FROM osm_waterway_linestring
|
||||||
WHERE name <> '' AND waterway = 'river'
|
WHERE name <> '' AND waterway = 'river'
|
||||||
GROUP BY name, name_en, name_de
|
GROUP BY name, name_en, name_de, tags
|
||||||
) AS waterway_union
|
) AS waterway_union
|
||||||
);
|
);
|
||||||
CREATE INDEX IF NOT EXISTS osm_important_waterway_linestring_geometry_idx ON osm_important_waterway_linestring USING gist(geometry);
|
CREATE INDEX IF NOT EXISTS osm_important_waterway_linestring_geometry_idx ON osm_important_waterway_linestring USING gist(geometry);
|
||||||
|
|
||||||
-- etldoc: osm_important_waterway_linestring -> osm_important_waterway_linestring_gen1
|
-- etldoc: osm_important_waterway_linestring -> osm_important_waterway_linestring_gen1
|
||||||
CREATE MATERIALIZED VIEW osm_important_waterway_linestring_gen1 AS (
|
CREATE MATERIALIZED VIEW osm_important_waterway_linestring_gen1 AS (
|
||||||
SELECT ST_Simplify(geometry, 60) AS geometry, name, name_en, name_de
|
SELECT ST_Simplify(geometry, 60) AS geometry, name, name_en, name_de, tags
|
||||||
FROM osm_important_waterway_linestring
|
FROM osm_important_waterway_linestring
|
||||||
WHERE ST_Length(geometry) > 1000
|
WHERE ST_Length(geometry) > 1000
|
||||||
);
|
);
|
||||||
|
@ -44,7 +44,7 @@ CREATE INDEX IF NOT EXISTS osm_important_waterway_linestring_gen1_geometry_idx O
|
||||||
|
|
||||||
-- etldoc: osm_important_waterway_linestring_gen1 -> osm_important_waterway_linestring_gen2
|
-- etldoc: osm_important_waterway_linestring_gen1 -> osm_important_waterway_linestring_gen2
|
||||||
CREATE MATERIALIZED VIEW osm_important_waterway_linestring_gen2 AS (
|
CREATE MATERIALIZED VIEW osm_important_waterway_linestring_gen2 AS (
|
||||||
SELECT ST_Simplify(geometry, 100) AS geometry, name, name_en, name_de
|
SELECT ST_Simplify(geometry, 100) AS geometry, name, name_en, name_de, tags
|
||||||
FROM osm_important_waterway_linestring_gen1
|
FROM osm_important_waterway_linestring_gen1
|
||||||
WHERE ST_Length(geometry) > 4000
|
WHERE ST_Length(geometry) > 4000
|
||||||
);
|
);
|
||||||
|
@ -52,7 +52,7 @@ CREATE INDEX IF NOT EXISTS osm_important_waterway_linestring_gen2_geometry_idx O
|
||||||
|
|
||||||
-- etldoc: osm_important_waterway_linestring_gen2 -> osm_important_waterway_linestring_gen3
|
-- etldoc: osm_important_waterway_linestring_gen2 -> osm_important_waterway_linestring_gen3
|
||||||
CREATE MATERIALIZED VIEW osm_important_waterway_linestring_gen3 AS (
|
CREATE MATERIALIZED VIEW osm_important_waterway_linestring_gen3 AS (
|
||||||
SELECT ST_Simplify(geometry, 200) AS geometry, name, name_en, name_de
|
SELECT ST_Simplify(geometry, 200) AS geometry, name, name_en, name_de, tags
|
||||||
FROM osm_important_waterway_linestring_gen2
|
FROM osm_important_waterway_linestring_gen2
|
||||||
WHERE ST_Length(geometry) > 8000
|
WHERE ST_Length(geometry) > 8000
|
||||||
);
|
);
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
update osm_waterway_linestring SET tags = slice_language_tags(tags) || get_basic_names(tags, geometry);
|
||||||
|
END $$;
|
|
@ -1,66 +1,67 @@
|
||||||
|
|
||||||
-- etldoc: ne_110m_rivers_lake_centerlines -> waterway_z3
|
-- etldoc: ne_110m_rivers_lake_centerlines -> waterway_z3
|
||||||
CREATE OR REPLACE VIEW waterway_z3 AS (
|
CREATE OR REPLACE VIEW waterway_z3 AS (
|
||||||
SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de
|
SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags
|
||||||
FROM ne_110m_rivers_lake_centerlines
|
FROM ne_110m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: ne_50m_rivers_lake_centerlines -> waterway_z4
|
-- etldoc: ne_50m_rivers_lake_centerlines -> waterway_z4
|
||||||
CREATE OR REPLACE VIEW waterway_z4 AS (
|
CREATE OR REPLACE VIEW waterway_z4 AS (
|
||||||
SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de
|
SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags
|
||||||
FROM ne_50m_rivers_lake_centerlines
|
FROM ne_50m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: ne_10m_rivers_lake_centerlines -> waterway_z6
|
-- etldoc: ne_10m_rivers_lake_centerlines -> waterway_z6
|
||||||
CREATE OR REPLACE VIEW waterway_z6 AS (
|
CREATE OR REPLACE VIEW waterway_z6 AS (
|
||||||
SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de
|
SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de, NULL::hstore AS tags
|
||||||
FROM ne_10m_rivers_lake_centerlines
|
FROM ne_10m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: osm_important_waterway_linestring_gen3 -> waterway_z9
|
-- etldoc: osm_important_waterway_linestring_gen3 -> waterway_z9
|
||||||
CREATE OR REPLACE VIEW waterway_z9 AS (
|
CREATE OR REPLACE VIEW waterway_z9 AS (
|
||||||
SELECT geometry, 'river'::text AS class, name, name_en, name_de FROM osm_important_waterway_linestring_gen3
|
SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags FROM osm_important_waterway_linestring_gen3
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: osm_important_waterway_linestring_gen2 -> waterway_z10
|
-- etldoc: osm_important_waterway_linestring_gen2 -> waterway_z10
|
||||||
CREATE OR REPLACE VIEW waterway_z10 AS (
|
CREATE OR REPLACE VIEW waterway_z10 AS (
|
||||||
SELECT geometry, 'river'::text AS class, name, name_en, name_de FROM osm_important_waterway_linestring_gen2
|
SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags FROM osm_important_waterway_linestring_gen2
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc:osm_important_waterway_linestring_gen1 -> waterway_z11
|
-- etldoc:osm_important_waterway_linestring_gen1 -> waterway_z11
|
||||||
CREATE OR REPLACE VIEW waterway_z11 AS (
|
CREATE OR REPLACE VIEW waterway_z11 AS (
|
||||||
SELECT geometry, 'river'::text AS class, name, name_en, name_de FROM osm_important_waterway_linestring_gen1
|
SELECT geometry, 'river'::text AS class, name, name_en, name_de, tags FROM osm_important_waterway_linestring_gen1
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: osm_waterway_linestring -> waterway_z12
|
-- etldoc: osm_waterway_linestring -> waterway_z12
|
||||||
CREATE OR REPLACE VIEW waterway_z12 AS (
|
CREATE OR REPLACE VIEW waterway_z12 AS (
|
||||||
SELECT geometry, waterway AS class, name, name_en, name_de FROM osm_waterway_linestring
|
SELECT geometry, waterway AS class, name, name_en, name_de, tags FROM osm_waterway_linestring
|
||||||
WHERE waterway IN ('river', 'canal')
|
WHERE waterway IN ('river', 'canal')
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: osm_waterway_linestring -> waterway_z13
|
-- etldoc: osm_waterway_linestring -> waterway_z13
|
||||||
CREATE OR REPLACE VIEW waterway_z13 AS (
|
CREATE OR REPLACE VIEW waterway_z13 AS (
|
||||||
SELECT geometry, waterway::text AS class, name, name_en, name_de FROM osm_waterway_linestring
|
SELECT geometry, waterway::text AS class, name, name_en, name_de, tags FROM osm_waterway_linestring
|
||||||
WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch')
|
WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch')
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: osm_waterway_linestring -> waterway_z14
|
-- etldoc: osm_waterway_linestring -> waterway_z14
|
||||||
CREATE OR REPLACE VIEW waterway_z14 AS (
|
CREATE OR REPLACE VIEW waterway_z14 AS (
|
||||||
SELECT geometry, waterway::text AS class, name, name_en, name_de FROM osm_waterway_linestring
|
SELECT geometry, waterway::text AS class, name, name_en, name_de, tags FROM osm_waterway_linestring
|
||||||
);
|
);
|
||||||
|
|
||||||
-- etldoc: layer_waterway[shape=record fillcolor=lightpink, style="rounded,filled",
|
-- etldoc: layer_waterway[shape=record fillcolor=lightpink, style="rounded,filled",
|
||||||
-- etldoc: label="layer_waterway | <z3> z3 |<z4_5> z4-z5 |<z6_8> z6-8 | <z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14> z14+" ];
|
-- etldoc: label="layer_waterway | <z3> z3 |<z4_5> z4-z5 |<z6_8> z6-8 | <z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14> z14+" ];
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_waterway(bbox geometry, zoom_level int)
|
CREATE OR REPLACE FUNCTION layer_waterway(bbox geometry, zoom_level int)
|
||||||
RETURNS TABLE(geometry geometry, class text, name text, name_en text, name_de text) AS $$
|
RETURNS TABLE(geometry geometry, class text, name text, name_en text, name_de text, tags hstore) AS $$
|
||||||
SELECT geometry, class,
|
SELECT geometry, class,
|
||||||
NULLIF(name, '') AS name,
|
NULLIF(name, '') AS name,
|
||||||
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
COALESCE(NULLIF(name_en, ''), name) AS name_en,
|
||||||
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de
|
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
|
||||||
|
tags
|
||||||
FROM (
|
FROM (
|
||||||
-- etldoc: waterway_z3 -> layer_waterway:z3
|
-- etldoc: waterway_z3 -> layer_waterway:z3
|
||||||
SELECT * FROM waterway_z3 WHERE zoom_level = 3
|
SELECT * FROM waterway_z3 WHERE zoom_level = 3
|
||||||
|
|
|
@ -23,8 +23,9 @@ layer:
|
||||||
- ditch
|
- ditch
|
||||||
datasource:
|
datasource:
|
||||||
geometry_field: geometry
|
geometry_field: geometry
|
||||||
query: (SELECT geometry, name, name_en, name_de, class FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT geometry, name, name_en, name_de, {name_languages}, class FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
|
- ./name.sql
|
||||||
- ./merge_waterway.sql
|
- ./merge_waterway.sql
|
||||||
- ./waterway.sql
|
- ./waterway.sql
|
||||||
datasources:
|
datasources:
|
||||||
|
|
|
@ -24,6 +24,64 @@ tileset:
|
||||||
maxzoom: 14
|
maxzoom: 14
|
||||||
minzoom: 0
|
minzoom: 0
|
||||||
pixel_scale: 256
|
pixel_scale: 256
|
||||||
|
languages:
|
||||||
|
- ar # Arabic
|
||||||
|
- az # Azerbaijani
|
||||||
|
- be # Belarusian
|
||||||
|
- bg # Bulgarian
|
||||||
|
- br # Breton
|
||||||
|
- bs # Bosnian
|
||||||
|
- ca # Catalan
|
||||||
|
- cs # Czech
|
||||||
|
- cy # Welsh
|
||||||
|
- da # Danish
|
||||||
|
- de # German
|
||||||
|
- el # Greek
|
||||||
|
- en # English
|
||||||
|
- es # Spanish
|
||||||
|
- et # Estonian
|
||||||
|
- fi # Finnish
|
||||||
|
- fr # French
|
||||||
|
- fy # Western Frisian
|
||||||
|
- ga # Irish
|
||||||
|
- gd # Scottish Gaelic
|
||||||
|
- he # Hebrew
|
||||||
|
- hr # Croatian
|
||||||
|
- hu # Hungarian
|
||||||
|
- hy # Armenian
|
||||||
|
- is # Icelandic
|
||||||
|
- it # Italian
|
||||||
|
- ja # Japanese
|
||||||
|
- ja_kana # Japanese Kana form
|
||||||
|
- ja_rm # romanization of Japanese (written with Latin)
|
||||||
|
- ka # Georgian
|
||||||
|
- kk # Kazakh
|
||||||
|
- kn # Kannada
|
||||||
|
- ko # Korean
|
||||||
|
- ko_rm # romanization of Korean (written with Latin)
|
||||||
|
- la # Latin
|
||||||
|
- lb # Luxembourgish
|
||||||
|
- lt # Lithuanian
|
||||||
|
- lv # Latvian
|
||||||
|
- mk # Macedonian
|
||||||
|
- mt # Maltese
|
||||||
|
- nl # Dutch
|
||||||
|
- "no" # Norwegian
|
||||||
|
- pl # Polish
|
||||||
|
- pt # Portuguese
|
||||||
|
- rm # Romansh
|
||||||
|
- ro # Romania
|
||||||
|
- ru # Russian
|
||||||
|
- sk # Slovak
|
||||||
|
- sl # Slovene
|
||||||
|
- sq # Albanian
|
||||||
|
- sr # Serbian written with Cyrillic
|
||||||
|
- sr-Latn # Serbian written with Latin
|
||||||
|
- sv # Swedish
|
||||||
|
- th # Thai
|
||||||
|
- tr # Turkish
|
||||||
|
- uk # Ukrainian
|
||||||
|
- zh # Chinese
|
||||||
defaults:
|
defaults:
|
||||||
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
|
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
|
||||||
datasource:
|
datasource:
|
||||||
|
|
|
@ -15,7 +15,6 @@ FROM (
|
||||||
pg_total_relation_size(relid) as "size"
|
pg_total_relation_size(relid) as "size"
|
||||||
FROM pg_catalog.pg_statio_user_tables
|
FROM pg_catalog.pg_statio_user_tables
|
||||||
WHERE schemaname='public'
|
WHERE schemaname='public'
|
||||||
AND relname::text ~ '^osm_.*_gen[0-9]{1,2}$'
|
|
||||||
) a
|
) a
|
||||||
;""".replace('\"', '\\\"')
|
;""".replace('\"', '\\\"')
|
||||||
|
|
||||||
|
@ -27,8 +26,7 @@ TABLE_SIZES_SQL="""SELECT
|
||||||
FROM pg_catalog.pg_statio_user_tables a
|
FROM pg_catalog.pg_statio_user_tables a
|
||||||
LEFT JOIN pg_stat_user_tables b ON (a.relid = b.relid)
|
LEFT JOIN pg_stat_user_tables b ON (a.relid = b.relid)
|
||||||
WHERE
|
WHERE
|
||||||
a.schemaname='public' AND
|
a.schemaname='public'
|
||||||
a.relname::text ~ '^osm_.*_gen[0-9]{1,2}$'
|
|
||||||
ORDER BY a.relname;
|
ORDER BY a.relname;
|
||||||
""".replace('\"', '\\\"')
|
""".replace('\"', '\\\"')
|
||||||
|
|
||||||
|
@ -37,8 +35,7 @@ TABLES_SQL = """SELECT
|
||||||
a.relname
|
a.relname
|
||||||
FROM pg_catalog.pg_statio_user_tables a
|
FROM pg_catalog.pg_statio_user_tables a
|
||||||
WHERE
|
WHERE
|
||||||
a.schemaname='public' AND
|
a.schemaname='public'
|
||||||
a.relname::text ~ '^osm_.*_gen[0-9]{1,2}$'
|
|
||||||
ORDER BY a.relname;
|
ORDER BY a.relname;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -51,7 +48,8 @@ WHERE
|
||||||
c.relkind IN('r', 'v', 'm') AND
|
c.relkind IN('r', 'v', 'm') AND
|
||||||
a.attnum > 0 AND
|
a.attnum > 0 AND
|
||||||
n.nspname = 'public' AND
|
n.nspname = 'public' AND
|
||||||
c.relname = '{0}'
|
c.relname = '{0}' AND
|
||||||
|
a.attisdropped = FALSE
|
||||||
ORDER BY a.attname;
|
ORDER BY a.attname;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -101,7 +99,7 @@ if __name__ == "__main__":
|
||||||
subprocess.check_output("make psql-analyze", shell=True)
|
subprocess.check_output("make psql-analyze", shell=True)
|
||||||
|
|
||||||
|
|
||||||
print "Total size of osm_.*_gen[0-9]+ tables"
|
print "Total size of tables"
|
||||||
cmds = [
|
cmds = [
|
||||||
'docker-compose run --rm import-osm',
|
'docker-compose run --rm import-osm',
|
||||||
'/usr/src/app/psql.sh -F\",\" --no-align -P pager=off',
|
'/usr/src/app/psql.sh -F\",\" --no-align -P pager=off',
|
Ładowanie…
Reference in New Issue