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:
@@ -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 (
|
||||
|
||||
@@ -16,6 +16,8 @@ tables:
|
||||
- name: name_de
|
||||
key: name:de
|
||||
type: string
|
||||
- name: tags
|
||||
type: hstore_tags
|
||||
- name: place
|
||||
key: place
|
||||
type: string
|
||||
|
||||
5
layers/water_name/name.sql
Normal file
5
layers/water_name/name.sql
Normal 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 $$;
|
||||
@@ -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 <> ''
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <> ''
|
||||
|
||||
Reference in New Issue
Block a user