add relations with claimed_by

pull/727/head
Eva J 2019-12-07 12:18:06 +01:00
rodzic 9bfdefca31
commit a05228381a
3 zmienionych plików z 238 dodań i 18 usunięć

Wyświetl plik

@ -1,3 +1,113 @@
CREATE OR REPLACE FUNCTION edit_name(name VARCHAR) RETURNS TEXT AS $$
SELECT CASE
WHEN POSITION(' at ' in name) > 0
THEN replace(SUBSTRING(name, POSITION(' at ' in name)+4), ' ', '')
ELSE replace(replace(name,' ',''),'Extentof','')
END;
$$ LANGUAGE SQL IMMUTABLE;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen1 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen1 AS
SELECT ST_Simplify(geometry, 10) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen1 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen1;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen2 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen2 AS
SELECT ST_Simplify(geometry, 20) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen2 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen2;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen3 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen3 AS
SELECT ST_Simplify(geometry, 40) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen3 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen3;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen4 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen4 AS
SELECT ST_Simplify(geometry, 80) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen4 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen4;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen5 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen5 AS
SELECT ST_Simplify(geometry, 160) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen5 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen5;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen6 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen6 AS
SELECT ST_Simplify(geometry, 300) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen6 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen6;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen7 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen7 AS
SELECT ST_Simplify(geometry, 600) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen7 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen7;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen8 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen8 AS
SELECT ST_Simplify(geometry, 1200) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen8 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen8;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen9 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen9 AS
SELECT ST_Simplify(geometry, 2400) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen9 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen9;
DROP TABLE IF EXISTS osm_border_disp_linestring_gen10 CASCADE;
CREATE TABLE osm_border_disp_linestring_gen10 AS
SELECT ST_Simplify(geometry, 4800) AS geometry,
osm_id, admin_level,
concat_ws('_', edit_name(name), claimed_by) AS disputed_view
FROM osm_border_disp_linestring
WHERE admin_level = '2';
CREATE INDEX ON osm_border_disp_linestring_gen10 USING gist (geometry);
ANALYZE osm_border_disp_linestring_gen10;
-- etldoc: ne_110m_admin_0_boundary_lines_land -> boundary_z0
@ -6,6 +116,7 @@ CREATE OR REPLACE VIEW boundary_z0 AS (
SELECT geometry,
2 AS admin_level,
(CASE WHEN featurecla LIKE 'Disputed%' THEN true ELSE false END) AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_110m_admin_0_boundary_lines_land
);
@ -17,10 +128,15 @@ CREATE OR REPLACE VIEW boundary_z1 AS (
SELECT geometry,
2 AS admin_level,
(CASE WHEN featurecla LIKE 'Disputed%' THEN true ELSE false END) AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_50m_admin_0_boundary_lines_land
UNION ALL
SELECT geometry, 4 AS admin_level, false AS disputed, false AS maritime
SELECT geometry,
4 AS admin_level,
false AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_50m_admin_1_states_provinces_lines
);
@ -32,10 +148,15 @@ CREATE OR REPLACE VIEW boundary_z3 AS (
SELECT geometry,
2 AS admin_level,
(CASE WHEN featurecla LIKE 'Disputed%' THEN true ELSE false END) AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_50m_admin_0_boundary_lines_land
UNION ALL
SELECT geometry, 4 AS admin_level, false AS disputed, false AS maritime
SELECT geometry,
4 AS admin_level,
false AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_50m_admin_1_states_provinces_lines
);
@ -48,87 +169,127 @@ CREATE OR REPLACE VIEW boundary_z4 AS (
SELECT geometry,
2 AS admin_level,
(CASE WHEN featurecla LIKE 'Disputed%' THEN true ELSE false END) AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_10m_admin_0_boundary_lines_land
WHERE featurecla <> 'Lease limit'
UNION ALL
SELECT geometry, 4 AS admin_level, false AS disputed, false AS maritime
SELECT geometry,
4 AS admin_level,
false AS disputed,
NULL AS disputed_view,
false AS maritime
FROM ne_10m_admin_1_states_provinces_lines
WHERE min_zoom <= 5
UNION ALL
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen10
WHERE maritime=true AND admin_level <= 2
);
-- etldoc: osm_border_linestring_gen9 -> boundary_z5
-- etldoc: osm_border_disp_linestring_gen9 -> boundary_z5
CREATE OR REPLACE VIEW boundary_z5 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen9
WHERE admin_level <= 4
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen9
);
-- etldoc: osm_border_linestring_gen8 -> boundary_z6
-- etldoc: osm_border_disp_linestring_gen8 -> boundary_z6
CREATE OR REPLACE VIEW boundary_z6 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen8
WHERE admin_level <= 4
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen8
);
-- etldoc: osm_border_linestring_gen7 -> boundary_z7
-- etldoc: osm_border_disp_linestring_gen7 -> boundary_z7
CREATE OR REPLACE VIEW boundary_z7 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen7
WHERE admin_level <= 4
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen7
);
-- etldoc: osm_border_linestring_gen6 -> boundary_z8
-- etldoc: osm_border_disp_linestring_gen6 -> boundary_z8
CREATE OR REPLACE VIEW boundary_z8 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen6
WHERE admin_level <= 4
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen6
);
-- etldoc: osm_border_linestring_gen5 -> boundary_z9
-- etldoc: osm_border_disp_linestring_gen5 -> boundary_z9
CREATE OR REPLACE VIEW boundary_z9 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen5
WHERE admin_level <= 6
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen5
);
-- etldoc: osm_border_linestring_gen4 -> boundary_z10
-- etldoc: osm_border_disp_linestring_gen4 -> boundary_z10
CREATE OR REPLACE VIEW boundary_z10 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen4
WHERE admin_level <= 6
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen4
);
-- etldoc: osm_border_linestring_gen3 -> boundary_z11
-- etldoc: osm_border_disp_linestring_gen3 -> boundary_z11
CREATE OR REPLACE VIEW boundary_z11 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen3
WHERE admin_level <= 8
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen3
);
-- etldoc: osm_border_linestring_gen2 -> boundary_z12
-- etldoc: osm_border_disp_linestring_gen2 -> boundary_z12
CREATE OR REPLACE VIEW boundary_z12 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen2
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen2
);
-- etldoc: osm_border_linestring_gen1 -> boundary_z13
-- etldoc: osm_border_disp_linestring_gen1 -> boundary_z13
CREATE OR REPLACE VIEW boundary_z13 AS (
SELECT geometry, admin_level, disputed, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
FROM osm_border_linestring_gen1
UNION ALL
SELECT geometry, admin_level::int, true AS disputed, disputed_view, false AS maritime
FROM osm_border_disp_linestring_gen1
);
-- etldoc: layer_boundary[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="<sql> layer_boundary |<z0> z0 |<z1_2> z1_2 | <z3> z3 | <z4> z4 | <z5> z5 | <z6> z6 | <z7> z7 | <z8> z8 | <z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13+"]
CREATE OR REPLACE FUNCTION layer_boundary (bbox geometry, zoom_level int)
RETURNS TABLE(geometry geometry, admin_level int, disputed int, maritime int) AS $$
SELECT geometry, admin_level, disputed::int, maritime::int FROM (
RETURNS TABLE(geometry geometry, admin_level int, disputed int, disputed_view text, maritime int) AS $$
SELECT geometry, admin_level, disputed::int, disputed_view, maritime::int FROM (
-- etldoc: boundary_z0 -> layer_boundary:z0
SELECT * FROM boundary_z0 WHERE geometry && bbox AND zoom_level = 0
UNION ALL

Wyświetl plik

@ -4,7 +4,7 @@ layer:
Contains administrative boundaries as linestrings.
Until z4 [Natural Earth data](http://www.naturalearthdata.com/downloads/) is used after which
OSM boundaries ([`boundary=administrative`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative))
are present from z5 to z14 (also for maritime boundaries with admin_level <= 2 at z4).
are present from z5 to z14 (also for maritime boundaries with `admin_level <= 2` at z4).
OSM data contains several [`admin_level`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level)
but for most styles it makes sense to just style `admin_level=2` and `admin_level=4`.
fields:
@ -18,6 +18,24 @@ layer:
description: |
Mark with `1` if the border is disputed.
values: [0, 1]
disputed_view:
description: |
Field containing name of the disputed area (extracted from border relation in OSM, without spaces) and ISO2 code of country, which wants to see the boundary line.
For country boundaries only (`admin_level = 2`).
Value examples from Asian OSM pbf extract
values:
- AbuMusaIsland_AE
- BaraHotiiValleys_CN
- ChineseClaim_CN
- Crimea_RU
- Crimea_UA
- Demchok_CN
- Dokdo_JP
- IndianClaim-North_IN
- IndianClaimwesternKashmir_IN
- PakistaniClaim_PK
- SamduValleys_CN
- TirpaniValleys_CN
maritime:
description: |
Mark with `1` if it is a maritime border.
@ -25,6 +43,9 @@ layer:
buffer_size: 4
datasource:
geometry_field: geometry
query: (SELECT geometry, admin_level, disputed, maritime FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t
query: (SELECT geometry, admin_level, disputed, disputed_view, maritime FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t
schema:
- ./boundary.sql
datasources:
- type: imposm3
mapping_file: ./mapping.yaml

Wyświetl plik

@ -0,0 +1,38 @@
generalized_tables:
# etldoc: imposm3 -> osm_border_disp_linestring
border_disp_linestring:
source: border_disp_relation
sql_filter: ST_GeometryType(geometry) = 'ST_LineString'
tables:
# etldoc: imposm3 -> osm_border_disp_relation
border_disp_relation:
type: relation_member
fields:
- name: osm_id
type: id
- name: geometry
type: geometry
- key: name
name: name
type: string
- key: boundary
name: boundary
type: string
- key: admin_level
name: admin_level
type: string
- key: claimed_by
name: claimed_by
type: string
- key: disputed_by
name: disputed_by
type: string
mapping:
type: [boundary]
filters:
require:
#admin_level: ['2']
admin_level: [__any__]
claimed_by: [__any__]