2 attributes, generalization in mapping, edit unions

pull/727/head
Eva J 2019-12-10 19:48:24 +01:00
rodzic fd940684eb
commit 0181513b1a
4 zmienionych plików z 124 dodań i 170 usunięć

Wyświetl plik

@ -7,154 +7,33 @@ CREATE OR REPLACE FUNCTION edit_name(name VARCHAR) RETURNS TEXT AS $$
$$ LANGUAGE SQL IMMUTABLE;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen1
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen2
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen3
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen4
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen5
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen6
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen7
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen8
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen9
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,
maritime
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;
-- etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen10
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,
maritime
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
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,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_110m_admin_0_boundary_lines_land
);
-- etldoc: ne_50m_admin_0_boundary_lines_land -> boundary_z1
-- etldoc: ne_50m_admin_1_states_provinces_lines -> boundary_z1
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,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_50m_admin_0_boundary_lines_land
UNION ALL
SELECT geometry,
4 AS admin_level,
false AS disputed,
NULL AS disputed_view,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_50m_admin_1_states_provinces_lines
);
@ -162,19 +41,20 @@ CREATE OR REPLACE VIEW boundary_z1 AS (
-- etldoc: ne_50m_admin_0_boundary_lines_land -> boundary_z3
-- etldoc: ne_50m_admin_1_states_provinces_lines -> boundary_z3
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,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_50m_admin_0_boundary_lines_land
UNION ALL
SELECT geometry,
4 AS admin_level,
false AS disputed,
NULL AS disputed_view,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_50m_admin_1_states_provinces_lines
);
@ -183,12 +63,12 @@ CREATE OR REPLACE VIEW boundary_z3 AS (
-- etldoc: ne_10m_admin_0_boundary_lines_land -> boundary_z4
-- etldoc: ne_10m_admin_1_states_provinces_lines -> boundary_z4
-- etldoc: osm_border_linestring_gen10 -> boundary_z4
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,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_10m_admin_0_boundary_lines_land
WHERE featurecla <> 'Lease limit'
@ -196,12 +76,13 @@ CREATE OR REPLACE VIEW boundary_z4 AS (
SELECT geometry,
4 AS admin_level,
false AS disputed,
NULL AS disputed_view,
NULL AS disputed_name,
NULL AS claimed_by,
false AS maritime
FROM ne_10m_admin_1_states_provinces_lines
WHERE min_zoom <= 5
UNION ALL
SELECT geometry, admin_level, disputed, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen10
WHERE maritime=true AND admin_level <= 2
);
@ -209,106 +90,114 @@ CREATE OR REPLACE VIEW boundary_z4 AS (
-- 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen9
WHERE admin_level <= 4
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen9)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen8
WHERE admin_level <= 4
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen8)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen7
WHERE admin_level <= 4
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen7)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen6
WHERE admin_level <= 4
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen6)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen5
WHERE admin_level <= 6
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen5)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen4
WHERE admin_level <= 6
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen4)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen3
WHERE admin_level <= 8
AND osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen3)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen2
WHERE osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen2)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, NULL AS disputed_view, maritime
SELECT geometry, admin_level, disputed, NULL AS disputed_name, NULL AS claimed_by, maritime
FROM osm_border_linestring_gen1
WHERE osm_id NOT IN (SELECT DISTINCT osm_id FROM osm_border_disp_linestring_gen1)
UNION ALL
SELECT geometry, admin_level, true AS disputed, disputed_view, maritime
SELECT geometry, admin_level, true AS disputed, edit_name(name) AS disputed_name, claimed_by, 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, disputed_view text, maritime int) AS $$
SELECT geometry, admin_level, disputed::int, disputed_view, maritime::int FROM (
RETURNS TABLE(geometry geometry, admin_level int, disputed int, disputed_name text, claimed_by text, maritime int) AS $$
SELECT geometry, admin_level, disputed::int, disputed_name, claimed_by, 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

@ -18,24 +18,27 @@ layer:
description: |
Mark with `1` if the border is disputed.
values: [0, 1]
disputed_view:
disputed_name:
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.
Field containing name of the disputed area (extracted from border relation in OSM, without spaces).
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
- AbuMusaIsland
- BaraHotiiValleys
- ChineseClaim
- Crimea
- Demchok
- Dokdo
- IndianClaim-North
- IndianClaimwesternKashmir
- PakistaniClaim
- SamduValleys
- TirpaniValleys
claimed_by:
description: |
ISO2 code of country, which wants to see the boundary line.
For country boundaries only (`admin_level = 2`).
maritime:
description: |
Mark with `1` if it is a maritime border.
@ -43,7 +46,7 @@ layer:
buffer_size: 4
datasource:
geometry_field: geometry
query: (SELECT geometry, admin_level, disputed, disputed_view, maritime FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t
query: (SELECT geometry, admin_level, disputed, disputed_name, claimed_by, maritime FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t
schema:
- ./boundary.sql
datasources:

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 432 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 436 KiB

Wyświetl plik

@ -1,9 +1,71 @@
generalized_tables:
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen10
border_disp_linestring_gen10:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 4800
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen9
border_disp_linestring_gen9:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 2400
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen8
border_disp_linestring_gen8:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 1200
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen7
border_disp_linestring_gen7:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 600
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen6
border_disp_linestring_gen6:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 300
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen5
border_disp_linestring_gen5:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 160
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen4
border_disp_linestring_gen4:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 80
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen3
border_disp_linestring_gen3:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 40
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen2
border_disp_linestring_gen2:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 20
# etldoc: osm_border_disp_linestring -> osm_border_disp_linestring_gen1
border_disp_linestring_gen1:
source: border_disp_linestring
sql_filter: admin_level = 2
tolerance: 10
# etldoc: osm_border_disp_relation -> 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: