Merge pull request #190 from klokantech/name_de

Add German names (name_de), unify English names (name_en)
This commit is contained in:
Jiri Kozel 2017-03-21 15:24:32 +01:00 committed by GitHub
commit 16f25b180f
24 changed files with 132 additions and 68 deletions

View File

@ -3,11 +3,13 @@
-- 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, ele int, ele_ft int, "rank" int) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, 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, ele::int, ele_ft::int, rank::int SELECT osm_id, geometry, name, name_en, name_de, ele::int, ele_ft::int, rank::int
FROM ( FROM (
SELECT osm_id, geometry, name, name_en, SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
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 (

View File

@ -15,6 +15,9 @@ tables:
- name: name_en - name: name_en
key: name:en key: name:en
type: string type: string
- name: name_de
key: name:de
type: string
- name: ele - name: ele
key: ele key: ele
type: string type: string

View File

@ -6,12 +6,13 @@ layer:
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
fields: fields:
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the peak. name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the peak.
name_en: The english `name:en` value if available. name_en: English name `name:en` if available, otherwise `name`.
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
elev_m: Elevation (`ele`) in meters. elev_m: Elevation (`ele`) in meters.
datasource: datasource:
geometry_field: geometry geometry_field: geometry
srid: 900913 srid: 900913
query: (SELECT osm_id, geometry, name, name_en, 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, ele, ele_ft, rank FROM layer_mountain_peak(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
schema: schema:
- ./layer.sql - ./layer.sql
datasources: datasources:

View File

@ -4,8 +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, place city_place, "rank" int, capital int) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, place city_place, "rank" int, capital int) AS $$
SELECT osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, place, "rank", normalize_capital_level(capital) AS capital SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
place, "rank", normalize_capital_level(capital) AS capital
FROM osm_city_point FROM osm_city_point
WHERE geometry && bbox WHERE geometry && bbox
AND ((zoom_level = 2 AND "rank" = 1) AND ((zoom_level = 2 AND "rank" = 1)
@ -14,11 +17,15 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, place c
UNION ALL UNION ALL
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,
place, place,
COALESCE("rank", gridrank + 10), COALESCE("rank", gridrank + 10),
normalize_capital_level(capital) AS capital normalize_capital_level(capital) AS capital
FROM ( FROM (
SELECT osm_id, geometry, name, name_en, place, "rank", capital, SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
place, "rank", capital,
row_number() OVER ( row_number() OVER (
PARTITION BY LabelGrid(geometry, 128 * pixel_width) PARTITION BY LabelGrid(geometry, 128 * pixel_width)
ORDER BY "rank" ASC NULLS LAST, ORDER BY "rank" ASC NULLS LAST,

View File

@ -3,11 +3,13 @@
-- 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, class text, "rank" int, capital INT) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, 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, name_en, osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'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
@ -18,7 +20,9 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
-- etldoc: osm_country_point -> layer_place:z8_11 -- etldoc: osm_country_point -> layer_place:z8_11
-- etldoc: osm_country_point -> layer_place:z12_14 -- etldoc: osm_country_point -> layer_place:z12_14
SELECT SELECT
osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'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 <> ''
@ -29,7 +33,9 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
-- etldoc: osm_state_point -> layer_place:z8_11 -- etldoc: osm_state_point -> layer_place:z8_11
-- etldoc: osm_state_point -> layer_place:z12_14 -- etldoc: osm_state_point -> layer_place:z12_14
SELECT SELECT
osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'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
@ -42,7 +48,9 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
-- etldoc: osm_island_point -> layer_place:z12_14 -- etldoc: osm_island_point -> layer_place:z12_14
SELECT SELECT
osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'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
@ -52,7 +60,9 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
-- etldoc: osm_island_polygon -> layer_place:z8_11 -- etldoc: osm_island_polygon -> layer_place:z8_11
-- etldoc: osm_island_polygon -> layer_place:z12_14 -- etldoc: osm_island_polygon -> layer_place:z12_14
SELECT SELECT
osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'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
@ -66,7 +76,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
-- etldoc: layer_city -> layer_place:z8_11 -- etldoc: layer_city -> layer_place:z8_11
-- etldoc: layer_city -> layer_place:z12_14 -- etldoc: layer_city -> layer_place:z12_14
SELECT SELECT
osm_id, geometry, name, name_en, osm_id, geometry, name, name_en, name_de,
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

View File

@ -55,6 +55,7 @@ tables:
type: geometry type: geometry
- *name - *name
- *name_en - *name_en
- *name_de
filters: filters:
require: require:
name: ["__any__"] name: ["__any__"]

View File

@ -7,7 +7,8 @@ layer:
We suggest you use different font styles and sizes to create a text hierarchy. We suggest you use different font styles and sizes to create a text hierarchy.
fields: fields:
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the POI. name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the POI.
name_en: The English `name:en` value or local `name` if not available. name_en: English name `name:en` if available, otherwise `name`.
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
capital: capital:
description: | description: |
The **capital** field marks the The **capital** field marks the
@ -52,7 +53,7 @@ layer:
buffer_size: 128 buffer_size: 128
datasource: datasource:
geometry_field: geometry geometry_field: geometry
query: (SELECT geometry, name, name_en, class, rank, capital FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t query: (SELECT geometry, name, name_en, name_de, class, rank, capital FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
schema: schema:
- ./types.sql - ./types.sql
- ./capital.sql - ./capital.sql

View File

@ -3,8 +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, class text, subclass text, "rank" int) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, class text, subclass text, "rank" int) AS $$
SELECT osm_id, geometry, NULLIF(name, '') AS name, NULLIF(name_en, '') AS name_en, poi_class(subclass) AS class, subclass, SELECT osm_id, geometry, NULLIF(name, '') AS name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
poi_class(subclass) AS class, subclass,
row_number() OVER ( row_number() OVER (
PARTITION BY LabelGrid(geometry, 100 * pixel_width) PARTITION BY LabelGrid(geometry, 100 * pixel_width)
ORDER BY CASE WHEN name = '' THEN 2000 ELSE poi_class_rank(poi_class(subclass)) END ASC ORDER BY CASE WHEN name = '' THEN 2000 ELSE poi_class_rank(poi_class(subclass)) END ASC

View File

@ -1,6 +1,6 @@
# imposm3 mapping file for https://github.com/osm2vectortiles/imposm3 # imposm3 mapping file for https://github.com/osm2vectortiles/imposm3
# Warning: this is not the official imposm3 # Warning: this is not the official imposm3
# aerialway values , see http://taginfo.openstreetmap.org/keys/aerialway#values # aerialway values , see http://taginfo.openstreetmap.org/keys/aerialway#values
def_poi_mapping_aerialway: &poi_mapping_aerialway def_poi_mapping_aerialway: &poi_mapping_aerialway
@ -306,6 +306,9 @@ tables:
- name: name_en - name: name_en
key: name:en key: name:en
type: string type: string
- name: name_de
key: name:de
type: string
- name: subclass - name: subclass
type: mapping_value type: mapping_value
mapping: mapping:
@ -336,6 +339,9 @@ tables:
- name: name_en - name: name_en
key: name:en key: name:en
type: string type: string
- name: name_de
key: name:de
type: string
- name: subclass - name: subclass
type: mapping_value type: mapping_value
mapping: mapping:
@ -349,4 +355,4 @@ tables:
shop: *poi_mapping_shop shop: *poi_mapping_shop
sport: *poi_mapping_sport sport: *poi_mapping_sport
tourism: *poi_mapping_tourism tourism: *poi_mapping_tourism
waterway: *poi_mapping_waterway waterway: *poi_mapping_waterway

View File

@ -7,7 +7,8 @@ layer:
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
fields: fields:
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the POI. name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the POI.
name_en: The english `name:en` value if available. name_en: English name `name:en` if available, otherwise `name`.
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
class: | class: |
More general classes of POIs. If there is no more general `class` for the `subclass` More general classes of POIs. If there is no more general `class` for the `subclass`
this field will contain the same value as `subclass`. this field will contain the same value as `subclass`.
@ -31,9 +32,9 @@ layer:
datasource: datasource:
geometry_field: geometry geometry_field: geometry
srid: 900913 srid: 900913
query: (SELECT geometry, name, name_en, class, subclass, rank FROM layer_poi(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t query: (SELECT geometry, name, name_en, name_de, class, subclass, rank FROM layer_poi(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
schema: schema:
- ./poi_polygon_update.sql - ./poi_polygon_update.sql
- ./class.sql - ./class.sql
- ./layer.sql - ./layer.sql
datasources: datasources:

View File

@ -55,6 +55,10 @@ name_en_field: &name_en
name: name_en name: name_en
key: name:en key: name:en
type: string type: string
name_de_field: &name_de
name: name_de
key: name:de
type: string
short_name_field: &short_name short_name_field: &short_name
key: short_name key: short_name
name: short_name name: short_name
@ -125,6 +129,7 @@ tables:
- *layer - *layer
- *name - *name
- *name_en - *name_en
- *name_de
- *short_name - *short_name
- *tunnel - *tunnel
- *bridge - *bridge
@ -178,6 +183,7 @@ tables:
- *layer - *layer
- *name - *name
- *name_en - *name_en
- *name_de
- *short_name - *short_name
- *tunnel - *tunnel
- *bridge - *bridge

View File

@ -3,10 +3,11 @@
-- 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, 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, 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, ''), NULLIF(name, '')) AS name_en, COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
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

View File

@ -14,7 +14,8 @@ CREATE MATERIALIZED VIEW osm_transportation_name_network AS (
hl.geometry, hl.geometry,
hl.osm_id, hl.osm_id,
hl.name, hl.name,
COALESCE(NULLIF(hl.name_en, ''), hl.name) AS name_en, hl.name_en,
hl.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)
@ -41,6 +42,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
member_osm_ids, member_osm_ids,
name, name,
name_en, name_en,
name_de,
ref, ref,
highway, highway,
network_type AS network, network_type AS network,
@ -50,6 +52,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
ST_LineMerge(ST_Collect(geometry)) AS geometry, ST_LineMerge(ST_Collect(geometry)) AS geometry,
name, name,
name_en, name_en,
name_de,
ref, ref,
highway, highway,
network_type, network_type,
@ -59,14 +62,14 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS (
WHERE ("rank"=1 OR "rank" is null) WHERE ("rank"=1 OR "rank" is null)
AND (name <> '' OR ref <> '') AND (name <> '' OR ref <> '')
AND NULLIF(highway, '') IS NOT NULL AND NULLIF(highway, '') IS NOT NULL
group by name, name_en, ref, highway, network_type group by name, name_en, name_de, ref, highway, network_type
) AS highway_union ) AS highway_union
); );
CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_geometry_idx ON osm_transportation_name_linestring USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_geometry_idx ON osm_transportation_name_linestring USING gist(geometry);
-- 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, member_osm_ids, name, name_en, ref, highway, network, z_order SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, member_osm_ids, name, name_en, name_de, 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
); );
@ -74,7 +77,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_geometry_idx
-- 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, member_osm_ids, name, name_en, ref, highway, network, z_order SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, member_osm_ids, name, name_en, name_de, 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
); );
@ -82,7 +85,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_geometry_idx
-- 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, member_osm_ids, name, name_en, ref, highway, network, z_order SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, member_osm_ids, name, name_en, name_de, 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
); );
@ -90,7 +93,7 @@ CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_geometry_idx
-- 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, member_osm_ids, name, name_en, ref, highway, network, z_order SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, member_osm_ids, name, name_en, name_de, 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
); );

View File

@ -9,7 +9,8 @@ layer:
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
fields: fields:
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Highways#Names_and_references) value of the highway. name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Highways#Names_and_references) value of the highway.
name_en: The english `name:en` value if available. name_en: English name `name:en` if available, otherwise `name`.
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
ref: The OSM [`ref`](http://wiki.openstreetmap.org/wiki/Key:ref) tag of the motorway or its network. ref: The OSM [`ref`](http://wiki.openstreetmap.org/wiki/Key:ref) tag of the motorway or its network.
ref_length: Length of the `ref` field. Useful for having a shield icon as background for labeling motorways. ref_length: Length of the `ref` field. Useful for having a shield icon as background for labeling motorways.
network: network:
@ -45,7 +46,7 @@ layer:
datasource: datasource:
geometry_field: geometry geometry_field: geometry
srid: 900913 srid: 900913
query: (SELECT geometry, name, name_en, 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, 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

View File

@ -53,6 +53,9 @@ tables:
- name: name_en - name: name_en
key: name:en key: name:en
type: string type: string
- name: name_de
key: name:de
type: string
- name: natural - name: natural
key: natural key: natural
type: string type: string

View File

@ -3,10 +3,13 @@
-- etldoc: label="layer_water_name | <z9_13> z9_13 | <z14_> z14+" ] ; -- etldoc: label="layer_water_name | <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, class text) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, name_de text, 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, name_en, 'lake'::text AS class SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'lake'::text AS class
FROM osm_water_lakeline FROM osm_water_lakeline
WHERE geometry && bbox WHERE geometry && bbox
AND ((zoom_level BETWEEN 9 AND 13 AND LineLabel(zoom_level, NULLIF(name, ''), geometry)) AND ((zoom_level BETWEEN 9 AND 13 AND LineLabel(zoom_level, NULLIF(name, ''), geometry))
@ -14,7 +17,10 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
-- etldoc: osm_water_point -> layer_water_name:z9_13 -- etldoc: osm_water_point -> layer_water_name:z9_13
-- etldoc: osm_water_point -> layer_water_name:z14_ -- etldoc: osm_water_point -> layer_water_name:z14_
UNION ALL UNION ALL
SELECT osm_id, geometry, name, name_en, 'lake'::text AS class SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
'lake'::text AS class
FROM osm_water_point FROM osm_water_point
WHERE geometry && bbox AND ( WHERE geometry && bbox AND (
(zoom_level BETWEEN 9 AND 13 AND area > 70000*2^(20-zoom_level)) (zoom_level BETWEEN 9 AND 13 AND area > 70000*2^(20-zoom_level))
@ -22,7 +28,10 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
) )
-- etldoc: osm_marine_point -> layer_water_name:z0_14_ -- etldoc: osm_marine_point -> layer_water_name:z0_14_
UNION ALL UNION ALL
SELECT osm_id, geometry, name, name_en, place::text AS class SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
place::text AS class
FROM osm_marine_point FROM osm_marine_point
WHERE geometry && bbox AND ( WHERE geometry && bbox AND (
place = 'ocean' place = 'ocean'

View File

@ -13,6 +13,9 @@ tables:
- name: name_en - name: name_en
key: name:en key: name:en
type: string type: string
- name: name_de
key: name:de
type: string
- name: place - name: place
key: place key: place
type: string type: string

View File

@ -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, ST_Area(wp.geometry) AS area name, name_en, name_de, 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 <> ''
@ -24,7 +24,7 @@ CREATE OR REPLACE FUNCTION water_lakeline.flag() RETURNS trigger AS $$
BEGIN BEGIN
INSERT INTO water_lakeline.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING; INSERT INTO water_lakeline.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING;
RETURN null; RETURN null;
END; END;
$$ language plpgsql; $$ language plpgsql;
CREATE OR REPLACE FUNCTION water_lakeline.refresh() RETURNS trigger AS CREATE OR REPLACE FUNCTION water_lakeline.refresh() RETURNS trigger AS

View File

@ -6,7 +6,8 @@ layer:
which derives nice centerlines from OSM water bodies. Only the most important lakes contain labels. which derives nice centerlines from OSM water bodies. Only the most important lakes contain labels.
fields: fields:
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the water body. name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the water body.
name_en: The english `name:en` value if available. name_en: English name `name:en` if available, otherwise `name`.
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
class: class:
description: | description: |
At the moment only `lake` since no ocean parts are labelled. *Reserved for future use*. At the moment only `lake` since no ocean parts are labelled. *Reserved for future use*.
@ -17,7 +18,7 @@ layer:
datasource: datasource:
geometry_field: geometry geometry_field: geometry
srid: 900913 srid: 900913
query: (SELECT geometry, name, name_en, class FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t query: (SELECT geometry, name, name_en, name_de, class FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t
schema: schema:
- ./merge_marine_rank.sql - ./merge_marine_rank.sql
- ./water_lakeline.sql - ./water_lakeline.sql

View File

@ -8,13 +8,13 @@ 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, ST_Area(wp.geometry) AS area wp.name, wp.name_en, wp.name_de, 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 <> ''
); );
CREATE INDEX IF NOT EXISTS osm_water_point_geometry_idx ON osm_water_point USING gist (geometry); CREATE INDEX IF NOT EXISTS osm_water_point_geometry_idx ON osm_water_point USING gist (geometry);
-- Handle updates -- Handle updates
CREATE SCHEMA IF NOT EXISTS water_point; CREATE SCHEMA IF NOT EXISTS water_point;
@ -24,7 +24,7 @@ CREATE OR REPLACE FUNCTION water_point.flag() RETURNS trigger AS $$
BEGIN BEGIN
INSERT INTO water_point.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING; INSERT INTO water_point.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING;
RETURN null; RETURN null;
END; END;
$$ language plpgsql; $$ language plpgsql;
CREATE OR REPLACE FUNCTION water_point.refresh() RETURNS trigger AS CREATE OR REPLACE FUNCTION water_point.refresh() RETURNS trigger AS

View File

@ -32,6 +32,9 @@ tables:
- name: name_en - name: name_en
key: name:en key: name:en
type: string type: string
- name: name_de
key: name:de
type: string
mapping: mapping:
waterway: waterway:
- stream - stream

View File

@ -14,21 +14,21 @@ DROP MATERIALIZED VIEW IF EXISTS osm_important_waterway_linestring_gen3 CASCADE;
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, name_en, name_de
FROM ( FROM (
SELECT SELECT
ST_LineMerge(ST_Union(geometry)) AS geometry, ST_LineMerge(ST_Union(geometry)) AS geometry,
name, COALESCE(NULLIF(name_en, ''), name) AS name_en name, name_en, name_de
FROM osm_waterway_linestring FROM osm_waterway_linestring
WHERE name <> '' AND waterway = 'river' WHERE name <> '' AND waterway = 'river'
GROUP BY name, name_en GROUP BY name, name_en, name_de
) 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 SELECT ST_Simplify(geometry, 60) AS geometry, name, name_en, name_de
FROM osm_important_waterway_linestring FROM osm_important_waterway_linestring
WHERE ST_Length(geometry) > 1000 WHERE ST_Length(geometry) > 1000
); );
@ -36,7 +36,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 SELECT ST_Simplify(geometry, 100) AS geometry, name, name_en, name_de
FROM osm_important_waterway_linestring_gen1 FROM osm_important_waterway_linestring_gen1
WHERE ST_Length(geometry) > 4000 WHERE ST_Length(geometry) > 4000
); );
@ -44,7 +44,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 SELECT ST_Simplify(geometry, 200) AS geometry, name, name_en, name_de
FROM osm_important_waterway_linestring_gen2 FROM osm_important_waterway_linestring_gen2
WHERE ST_Length(geometry) > 8000 WHERE ST_Length(geometry) > 8000
); );
@ -86,6 +86,3 @@ CREATE CONSTRAINT TRIGGER trigger_refresh
INITIALLY DEFERRED INITIALLY DEFERRED
FOR EACH ROW FOR EACH ROW
EXECUTE PROCEDURE waterway.refresh(); EXECUTE PROCEDURE waterway.refresh();

View File

@ -1,65 +1,66 @@
-- 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 SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de
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 SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de
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 SELECT geometry, 'river'::text AS class, NULL::text AS name, NULL::text AS name_en, NULL::text AS name_de
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 FROM osm_important_waterway_linestring_gen3 SELECT geometry, 'river'::text AS class, name, name_en, name_de 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 FROM osm_important_waterway_linestring_gen2 SELECT geometry, 'river'::text AS class, name, name_en, name_de 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 FROM osm_important_waterway_linestring_gen1 SELECT geometry, 'river'::text AS class, name, name_en, name_de 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 FROM osm_waterway_linestring SELECT geometry, waterway AS class, name, name_en, name_de 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 FROM osm_waterway_linestring SELECT geometry, waterway::text AS class, name, name_en, name_de 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 FROM osm_waterway_linestring SELECT geometry, waterway::text AS class, name, name_en, name_de 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) AS $$ RETURNS TABLE(geometry geometry, class text, name text, name_en text, name_de text) 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
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

View File

@ -10,7 +10,8 @@ layer:
name: | name: |
The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the waterway. The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the waterway.
The `name` field may be empty for NaturalEarth data or at lower zoom levels. The `name` field may be empty for NaturalEarth data or at lower zoom levels.
name_en: The english `name:en` value if available. name_en: English name `name:en` if available, otherwise `name`.
name_de: German name `name:de` if available, otherwise `name` or `name:en`.
class: class:
description: | description: |
The original value of the [`waterway`](http://wiki.openstreetmap.org/wiki/Key:waterway) tag. The original value of the [`waterway`](http://wiki.openstreetmap.org/wiki/Key:waterway) tag.
@ -22,7 +23,7 @@ layer:
- ditch - ditch
datasource: datasource:
geometry_field: geometry geometry_field: geometry
query: (SELECT geometry, name, name_en, class FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t query: (SELECT geometry, name, name_en, name_de, class FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t
schema: schema:
- ./merge_waterway.sql - ./merge_waterway.sql
- ./waterway.sql - ./waterway.sql