Remove unnecessary fields from boundary

pull/24/head
lukasmartinelli 2016-10-28 20:39:38 +02:00
rodzic 8918e1ff00
commit ff52cfda08
5 zmienionych plików z 49 dodań i 53 usunięć

Wyświetl plik

@ -1,4 +1,4 @@
all: build/openmaptiles.tm2source/data.yml build/mapping.yaml build/tileset.sql layers/railway/README.md all: build/openmaptiles.tm2source/data.yml build/mapping.yaml build/tileset.sql layers/railway/README.md layers/boundary/README.md
build/openmaptiles.tm2source/data.yml: build/openmaptiles.tm2source/data.yml:
mkdir -p build/openmaptiles.tm2source && generate-tm2source openmaptiles.yaml --host="postgres" --port=5432 --database="openmaptiles" --user="openmaptiles" --password="openmaptiles" > build/openmaptiles.tm2source/data.yml mkdir -p build/openmaptiles.tm2source && generate-tm2source openmaptiles.yaml --host="postgres" --port=5432 --database="openmaptiles" --user="openmaptiles" --password="openmaptiles" > build/openmaptiles.tm2source/data.yml
@ -12,5 +12,8 @@ build/tileset.sql:
layers/railway/README.md: layers/railway/README.md:
generate-doc layers/railway/railway.yaml --diagram layers/railway/mapping > layers/railway/README.md generate-doc layers/railway/railway.yaml --diagram layers/railway/mapping > layers/railway/README.md
layers/boundary/README.md:
generate-doc layers/boundary/boundary.yaml --diagram layers/boundary/mapping > layers/boundary/README.md
clean: clean:
rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql && rm -f layers/**/README.md&& rm -f layers/**/*.png rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql && rm -f layers/**/README.md&& rm -f layers/**/*.png

Wyświetl plik

@ -0,0 +1,19 @@
# boundary
Contains administrative boundaries as linestrings (no maritime boundaries yet) as linestrings.
Until z7 [Natural Earth data](http://www.naturalearthdata.com/downloads/10m-cultural-vectors/10m-admin-0-countries/)
is used after which OSM boundaries ([`boundary=administrative`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative)) are present from z8 to z14.
OSM data contains all [`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
- **admin_level**: OSM [admin_level](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level)
indicating the level of importance of this boundary.
At low zoom levels the Natural Earth boundaries are mapped to the equivalent admin levels.
## Mapping
![](mapping.png)

Wyświetl plik

@ -1,114 +1,85 @@
CREATE OR REPLACE FUNCTION boundary_class(featureclass VARCHAR) RETURNS VARCHAR
AS $$
BEGIN
RETURN CASE
WHEN featureclass ILIKE 'line of control%' THEN 'control'
WHEN featureclass ILIKE 'disputed%' THEN 'dispute'
WHEN featureclass ILIKE 'lease%' THEN 'lease'
WHEN featureclass ILIKE 'overlay%' THEN 'overlay'
ELSE 'boundary'
END;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE OR REPLACE VIEW boundary_z0 AS ( CREATE OR REPLACE VIEW boundary_z0 AS (
SELECT geom, 2 AS admin_level, scalerank, SELECT geom, 2 AS admin_level
boundary_class(featurecla) AS class
FROM ne_110m_admin_0_boundary_lines_land FROM ne_110m_admin_0_boundary_lines_land
); );
CREATE OR REPLACE VIEW boundary_z1 AS ( CREATE OR REPLACE VIEW boundary_z1 AS (
SELECT geom, 2 AS admin_level, scalerank, SELECT geom, 2 AS admin_level
boundary_class(featurecla) AS class
FROM ne_50m_admin_0_boundary_lines_land FROM ne_50m_admin_0_boundary_lines_land
UNION ALL UNION ALL
SELECT geom, 4 AS admin_level, scalerank, SELECT geom, 4 AS admin_level
boundary_class(featurecla) AS class
FROM ne_50m_admin_1_states_provinces_lines FROM ne_50m_admin_1_states_provinces_lines
WHERE scalerank <= 2 WHERE scalerank <= 2
); );
CREATE OR REPLACE VIEW boundary_z3 AS ( CREATE OR REPLACE VIEW boundary_z3 AS (
SELECT geom, 2 AS admin_level, scalerank, SELECT geom, 2 AS admin_level
boundary_class(featurecla) AS class
FROM ne_50m_admin_0_boundary_lines_land FROM ne_50m_admin_0_boundary_lines_land
UNION ALL UNION ALL
SELECT geom, 4 AS admin_level, scalerank, SELECT geom, 4 AS admin_level
boundary_class(featurecla) AS class
FROM ne_50m_admin_1_states_provinces_lines FROM ne_50m_admin_1_states_provinces_lines
); );
CREATE OR REPLACE VIEW boundary_z4 AS ( CREATE OR REPLACE VIEW boundary_z4 AS (
SELECT geom, 2 AS admin_level, scalerank, SELECT geom, 2 AS admin_level
boundary_class(featurecla) AS class
FROM ne_10m_admin_0_boundary_lines_land FROM ne_10m_admin_0_boundary_lines_land
UNION ALL UNION ALL
SELECT geom, 4 AS admin_level, scalerank, SELECT geom, 4 AS admin_level
boundary_class(featurecla) AS class
FROM ne_10m_admin_1_states_provinces_lines_shp FROM ne_10m_admin_1_states_provinces_lines_shp
WHERE scalerank <= 3 AND featurecla = 'Adm-1 boundary' WHERE scalerank <= 3 AND featurecla = 'Adm-1 boundary'
); );
CREATE OR REPLACE VIEW boundary_z5 AS ( CREATE OR REPLACE VIEW boundary_z5 AS (
SELECT geom, 2 AS admin_level, scalerank, SELECT geom, 2 AS admin_level
boundary_class(featurecla) AS class
FROM ne_10m_admin_0_boundary_lines_land FROM ne_10m_admin_0_boundary_lines_land
UNION ALL UNION ALL
SELECT geom, 4 AS admin_level, scalerank, SELECT geom, 4 AS admin_level
boundary_class(featurecla) AS class
FROM ne_10m_admin_1_states_provinces_lines_shp FROM ne_10m_admin_1_states_provinces_lines_shp
WHERE scalerank <= 7 AND featurecla = 'Adm-1 boundary' WHERE scalerank <= 7 AND featurecla = 'Adm-1 boundary'
); );
CREATE OR REPLACE VIEW boundary_z7 AS ( CREATE OR REPLACE VIEW boundary_z7 AS (
SELECT geom, 2 AS admin_level, scalerank, SELECT geom, 2 AS admin_level
boundary_class(featurecla) AS class
FROM ne_10m_admin_0_boundary_lines_land FROM ne_10m_admin_0_boundary_lines_land
UNION ALL UNION ALL
SELECT geom, 4 AS admin_level, scalerank, SELECT geom, 4 AS admin_level
boundary_class(featurecla) AS class
FROM ne_10m_admin_1_states_provinces_lines_shp FROM ne_10m_admin_1_states_provinces_lines_shp
WHERE featurecla = 'Adm-1 boundary' WHERE featurecla = 'Adm-1 boundary'
); );
CREATE OR REPLACE VIEW boundary_z8 AS ( CREATE OR REPLACE VIEW boundary_z8 AS (
SELECT geometry AS geom, admin_level, SELECT geometry AS geom, admin_level
NULL AS scalerank, NULL AS class
FROM osm_boundary_linestring_gen5 FROM osm_boundary_linestring_gen5
WHERE admin_level <= 4 AND ST_Length(geometry) > 1000 WHERE admin_level <= 4 AND ST_Length(geometry) > 1000
); );
CREATE OR REPLACE VIEW boundary_z9 AS ( CREATE OR REPLACE VIEW boundary_z9 AS (
SELECT geometry AS geom, admin_level, SELECT geometry AS geom, admin_level
NULL AS scalerank, NULL AS class
FROM osm_boundary_linestring_gen4 FROM osm_boundary_linestring_gen4
WHERE admin_level <= 6 WHERE admin_level <= 6
); );
CREATE OR REPLACE VIEW boundary_z10 AS ( CREATE OR REPLACE VIEW boundary_z10 AS (
SELECT geometry AS geom, admin_level, SELECT geometry AS geom, admin_level
NULL AS scalerank, NULL AS class
FROM osm_boundary_linestring_gen3 FROM osm_boundary_linestring_gen3
WHERE admin_level <= 6 WHERE admin_level <= 6
); );
CREATE OR REPLACE VIEW boundary_z11 AS ( CREATE OR REPLACE VIEW boundary_z11 AS (
SELECT geometry AS geom, admin_level, SELECT geometry AS geom, admin_level
NULL AS scalerank, NULL AS class
FROM osm_boundary_linestring_gen2 FROM osm_boundary_linestring_gen2
WHERE admin_level <= 8 WHERE admin_level <= 8
); );
CREATE OR REPLACE VIEW boundary_z12 AS ( CREATE OR REPLACE VIEW boundary_z12 AS (
SELECT geometry AS geom, admin_level, SELECT geometry AS geom, admin_level
NULL AS scalerank, NULL AS class
FROM osm_boundary_linestring_gen1 FROM osm_boundary_linestring_gen1
); );
CREATE OR REPLACE FUNCTION layer_boundary (bbox geometry, zoom_level int) CREATE OR REPLACE FUNCTION layer_boundary (bbox geometry, zoom_level int)
RETURNS TABLE(geom geometry, admin_level int, scalerank int, class text) AS $$ RETURNS TABLE(geometry geometry, admin_level int) AS $$
SELECT geom, admin_level, scalerank::int, class FROM ( SELECT geom, admin_level FROM (
SELECT * FROM boundary_z0 WHERE geom && bbox AND zoom_level = 0 SELECT * FROM boundary_z0 WHERE geom && bbox AND zoom_level = 0
UNION ALL UNION ALL
SELECT * FROM boundary_z1 WHERE geom && bbox AND zoom_level BETWEEN 1 AND 2 SELECT * FROM boundary_z1 WHERE geom && bbox AND zoom_level BETWEEN 1 AND 2

Wyświetl plik

@ -1,17 +1,20 @@
layer: layer:
id: "boundary" id: "boundary"
description: | description: |
Contains [administrative boundaries](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative) Contains administrative boundaries as linestrings (no maritime boundaries yet) as linestrings.
(no maritime boundaries yet). Until z7 [Natural Earth data](http://www.naturalearthdata.com/downloads/10m-cultural-vectors/10m-admin-0-countries/)
Until z7 Natural Earth data is used which switches to OSM boundaries after z8. is used after which OSM boundaries ([`boundary=administrative`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative)) are present from z8 to z14.
buffer_size: 4 OSM data contains all [`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: fields:
admin_level: | admin_level: |
OSM [admin_level](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level) OSM [admin_level](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level)
indicating the level of importance of this boundary. indicating the level of importance of this boundary.
At low zoom levels the Natural Earth boundaries are mapped to the equivalent admin levels. At low zoom levels the Natural Earth boundaries are mapped to the equivalent admin levels.
buffer_size: 4
datasource: datasource:
query: (SELECT * FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t geometry_field: geometry
query: (SELECT geometry, admin_level FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t
schema: schema:
- ./boundary.sql - ./boundary.sql
datasources: datasources:

Plik binarny nie jest wyświetlany.

Po

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