Multilinguality (#279)

Improve multilinguality: names in 57 languages, name:latin, name:nonlatin, name_int. Fixes #211 #252 #80.

See #279 for more info.
This commit is contained in:
Jiri Kozel
2017-06-12 17:53:47 +02:00
committed by GitHub
parent 8ff5d10e8b
commit 51bc8fad35
33 changed files with 182 additions and 114 deletions

View File

@@ -3,12 +3,13 @@
-- 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)
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:z14_
SELECT osm_id, geometry, name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
tags,
'lake'::text AS class
FROM osm_water_lakeline
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,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
tags,
'lake'::text AS class
FROM osm_water_point
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,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
tags,
place::text AS class
FROM osm_marine_point
WHERE geometry && bbox AND (

View File

@@ -16,6 +16,8 @@ tables:
- name: name_de
key: name:de
type: string
- name: tags
type: hstore_tags
- name: place
key: place
type: string

View File

@@ -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 $$;

View File

@@ -8,7 +8,7 @@ DROP MATERIALIZED VIEW IF EXISTS osm_water_lakeline CASCADE;
CREATE MATERIALIZED VIEW osm_water_lakeline AS (
SELECT wp.osm_id,
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
INNER JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
WHERE wp.name <> ''

View File

@@ -18,8 +18,9 @@ layer:
datasource:
geometry_field: geometry
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:
- ./name.sql
- ./merge_marine_rank.sql
- ./water_lakeline.sql
- ./water_point.sql

View File

@@ -8,7 +8,7 @@ DROP MATERIALIZED VIEW IF EXISTS osm_water_point CASCADE;
CREATE MATERIALIZED VIEW osm_water_point AS (
SELECT
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
LEFT JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
WHERE ll.osm_id IS NULL AND wp.name <> ''