Merge pull request #62 from openmaptiles/feature/landuse-park-layer

Landuse, Landcover, Park Layer
pull/61/head^2
Lukas Martinelli 2016-12-01 09:32:11 +01:00 zatwierdzone przez GitHub
commit d53575faa3
10 zmienionych plików z 334 dodań i 139 usunięć

Wyświetl plik

@ -9,12 +9,12 @@
--);
--CREATE INDEX IF NOT EXISTS landcover_grouped_gen2_geometry_idx ON landcover_grouped_gen2 USING gist(geometry);
CREATE OR REPLACE FUNCTION landcover_class(landuse VARCHAR, "natural" VARCHAR, wetland VARCHAR) RETURNS TEXT AS $$
CREATE OR REPLACE FUNCTION landcover_class(landuse VARCHAR, "natural" VARCHAR, leisure VARCHAR, wetland VARCHAR) RETURNS TEXT AS $$
SELECT CASE
WHEN landuse IN ('farmland', 'farm', 'orchard', 'vineyard', 'plant_nursery') THEN 'farmland'
WHEN "natural" IN ('glacier', 'ice_shelf') THEN 'ice'
WHEN "natural"='wood' OR landuse IN ('forest', 'wood') THEN 'wood'
WHEN "natural"='grassland' OR landuse IN ('grass', 'meadow', 'village_green', 'allotments', 'park', 'recreation_ground', 'grassland') THEN 'grass'
WHEN "natural"='grassland' OR landuse IN ('grass', 'meadow', 'allotments', 'grassland', 'park', 'village_green', 'recreation_ground') OR leisure='park' THEN 'grass'
WHEN "natural"='wetland' OR wetland IN ('bog', 'swamp', 'wet_meadow', 'marsh', 'reedbed', 'saltern', 'tidalflat', 'saltmarsh', 'mangrove') THEN 'wetland'
ELSE NULL
END;
@ -22,70 +22,73 @@ $$ LANGUAGE SQL IMMUTABLE;
-- etldoc: ne_110m_glaciated_areas -> landcover_z0
CREATE OR REPLACE VIEW landcover_z0 AS (
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier'::text AS "natural", NULL::text AS wetland FROM ne_110m_glaciated_areas
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier'::text AS "natural", NULL::text AS leisure, NULL::text AS wetland FROM ne_110m_glaciated_areas
);
CREATE OR REPLACE VIEW landcover_z2 AS (
-- etldoc: ne_50m_glaciated_areas -> landcover_z2
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier'::text AS "natural", NULL::text AS wetland FROM ne_50m_glaciated_areas
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier'::text AS "natural", NULL::text AS leisure, NULL::text AS wetland FROM ne_50m_glaciated_areas
UNION ALL
-- etldoc: ne_50m_antarctic_ice_shelves_polys -> landcover_z2
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'ice_shelf'::text AS "natural", NULL::text AS wetland FROM ne_50m_antarctic_ice_shelves_polys
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'ice_shelf'::text AS "natural", NULL::text AS leisure, NULL::text AS wetland FROM ne_50m_antarctic_ice_shelves_polys
);
CREATE OR REPLACE VIEW landcover_z5 AS (
-- etldoc: ne_10m_glaciated_areas -> landcover_z5
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier'::text AS "natural", NULL::text AS wetland FROM ne_10m_glaciated_areas
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier'::text AS "natural", NULL::text AS leisure, NULL::text AS wetland FROM ne_10m_glaciated_areas
UNION ALL
-- etldoc: ne_10m_antarctic_ice_shelves_polys -> landcover_z5
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'ice_shelf'::text AS "natural", NULL::text AS wetland FROM ne_10m_antarctic_ice_shelves_polys
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'ice_shelf'::text AS "natural", NULL::text AS leisure, NULL::text AS wetland FROM ne_10m_antarctic_ice_shelves_polys
);
CREATE OR REPLACE VIEW landcover_z8 AS (
-- etldoc: osm_landcover_polygon_gen5 -> landcover_z8
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen5
-- etldoc: osm_landcover_polygon_gen6 -> landcover_z8
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon_gen6
);
CREATE OR REPLACE VIEW landcover_z9 AS (
-- etldoc: osm_landcover_polygon_gen4 -> landcover_z9
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen4
-- etldoc: osm_landcover_polygon_gen5 -> landcover_z9
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon_gen5
);
CREATE OR REPLACE VIEW landcover_z10 AS (
-- etldoc: osm_landcover_polygon_gen3 -> landcover_z10
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen3
-- etldoc: osm_landcover_polygon_gen4 -> landcover_z10
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon_gen4
);
CREATE OR REPLACE VIEW landcover_z11 AS (
-- etldoc: osm_landcover_polygon_gen2 -> landcover_z11
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen2
-- etldoc: osm_landcover_polygon_gen3 -> landcover_z11
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon_gen3
);
CREATE OR REPLACE VIEW landcover_z12 AS (
-- etldoc: osm_landcover_polygon_gen1 -> landcover_z12
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen1
-- etldoc: osm_landcover_polygon_gen2 -> landcover_z12
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon_gen2
);
CREATE OR REPLACE VIEW landcover_z13 AS (
-- etldoc: osm_landcover_polygon -> landcover_z13
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon WHERE ST_Area(geometry) > 60000
-- etldoc: osm_landcover_polygon_gen1 -> landcover_z13
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon_gen1
);
CREATE OR REPLACE VIEW landcover_z14 AS (
-- etldoc: osm_landcover_polygon -> landcover_z14
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon
SELECT osm_id, geometry, landuse, "natural", leisure, wetland FROM osm_landcover_polygon
);
-- etldoc: layer_landcover[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="layer_landcover | <z0> z0 | <z2_4> z2_4 | <z5_7> z5_7 | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ;
-- etldoc: label="layer_landcover | <z0_1> z0-z1 | <z2_4> z2-z4 | <z5_7> z5-z7 | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
CREATE OR REPLACE FUNCTION layer_landcover(bbox geometry, zoom_level int)
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$
SELECT osm_id, geometry,
landcover_class(landuse, "natural", wetland) AS class,
COALESCE(NULLIF("natural", ''), NULLIF(landuse, ''), NULLIF('wetland', '')) AS subclass
landcover_class(landuse, "natural", leisure, wetland) AS class,
COALESCE(
NULLIF("natural", ''), NULLIF(landuse, ''),
NULLIF(leisure, ''), NULLIF(wetland, '')
) AS subclass
FROM (
-- etldoc: landcover_z0 -> layer_landcover:z0
-- etldoc: landcover_z0 -> layer_landcover:z0_1
SELECT * FROM landcover_z0
WHERE zoom_level BETWEEN 0 AND 1 AND geometry && bbox
UNION ALL
@ -98,31 +101,31 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$
WHERE zoom_level BETWEEN 5 AND 7 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z8 -> layer_landcover:z8
SELECT osm_id, geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z8 WHERE zoom_level = 8 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z9 -> layer_landcover:z9
SELECT osm_id, geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z9 WHERE zoom_level = 9 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z10 -> layer_landcover:z10
SELECT osm_id, geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z10 WHERE zoom_level = 10 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z11 -> layer_landcover:z11
SELECT osm_id, geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z11 WHERE zoom_level = 11 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z12 -> layer_landcover:z12
SELECT osm_id, geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z12 WHERE zoom_level = 12 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z13 -> layer_landcover:z13
SELECT osm_id, ST_Simplify(geometry, 10) AS geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z13 WHERE zoom_level = 13 AND geometry && bbox
UNION ALL
-- etldoc: landcover_z14 -> layer_landcover:z14_
SELECT osm_id, geometry, landuse, "natural", wetland
SELECT *
FROM landcover_z14 WHERE zoom_level >= 14 AND geometry && bbox
) AS zoom_levels;
$$ LANGUAGE SQL IMMUTABLE;

Wyświetl plik

@ -2,16 +2,52 @@ layer:
id: "landcover"
description: |
Landcover is used to describe the physical material at the surface of the earth. At lower zoom levels this is
from Natural Earth data for glaciers and ice shelves and at higher zoom levels the landcover is implied
by OSM tags (like `landuse` or `natural`).
from Natural Earth data for glaciers and ice shelves and at higher zoom levels the [landcover is [implied by OSM tags](http://wiki.openstreetmap.org/wiki/Landcover). The most common use case for this layer
is to style wood (`class=wood`) and grass (`class=`grass`) areas.
buffer_size: 4
fields:
class: |
More generalized groups of either `farmland`, `ice`, `wood`, `grass` or `wetland`.
Use this to assign general colors to the landcover.
subclass: |
Original value of either the `landuse`, `natural` or `wetland` tag.
Use this to do more precise styling.
class:
description: |
Use the **class** to assign natural colors for **landcover**.
values:
- farmland
- ice
- wood
- grass
- wetland
subclass:
description: |
Use **subclass** to do more precise styling.
Original value of either the
[`natural`](http://wiki.openstreetmap.org/wiki/Key:natural),
[`landuse`](http://wiki.openstreetmap.org/wiki/Key:landuse),
,[`leisure`](http://wiki.openstreetmap.org/wiki/Key:leisure),
or [`wetland`](http://wiki.openstreetmap.org/wiki/Key:wetland) tag.
values:
- allotments
- farm
- farmland
- orchard
- plant_nursery
- vineyard
- grass
- grassland
- meadow
- forest
- village_green
- recreation_ground
- park
- wetland
- grassland
- bog
- swamp
- wet_meadow
- marsh
- reedbed
- saltern
- tidalflat
- saltmarsh
- mangrove
datasource:
geometry_field: geometry
query: (SELECT geometry, class, subclass FROM layer_landcover(!bbox!, z(!scale_denominator!))) AS t

Wyświetl plik

@ -1,38 +1,44 @@
generalized_tables:
# etldoc: imposm3 -> osm_landcover_polygon_gen6
landcover_polygon_gen6:
source: landcover_polygon_gen5
sql_filter: area>15000000
tolerance: 300.0
# etldoc: imposm3 -> osm_landcover_polygon_gen5
landcover_polygon_gen5:
source: landcover_polygon_gen4
sql_filter: area>15000000
tolerance: 300.0
sql_filter: area>4200000
tolerance: 200.0
# etldoc: imposm3 -> osm_landcover_polygon_gen4
landcover_polygon_gen4:
source: landcover_polygon_gen3
sql_filter: area>4200000
tolerance: 200.0
# etldoc: imposm3 -> osm_landcover_polygon_gen3
landcover_polygon_gen3:
source: landcover_polygon_gen2
sql_filter: area>1200000
tolerance: 120.0
# etldoc: imposm3 -> osm_landcover_polygon_gen2
landcover_polygon_gen2:
source: landcover_polygon_gen1
# etldoc: imposm3 -> osm_landcover_polygon_gen3
landcover_polygon_gen3:
source: landcover_polygon_gen2
sql_filter: area>480000
tolerance: 80.0
# etldoc: imposm3 -> osm_landcover_polygon_gen1
landcover_polygon_gen1:
source: landcover_polygon
# etldoc: imposm3 -> osm_landcover_polygon_gen2
landcover_polygon_gen2:
source: landcover_polygon_gen1
sql_filter: area>240000
tolerance: 50.0
# etldoc: imposm3 -> osm_landcover_polygon_gen1
landcover_polygon_gen1:
source: landcover_polygon
sql_filter: area>60000
tolerance: 20.0
tables:
# etldoc: imposm3 -> osm_landcover_polygon
# etldoc: imposm3 -> osm_landcover_polygon
landcover_polygon:
fields:
- name: osm_id
@ -42,6 +48,9 @@ tables:
- name: landuse
key: landuse
type: string
- name: leisure
key: leisure
type: string
- name: natural
key: natural
type: string
@ -61,13 +70,16 @@ tables:
- grass
- grassland
- meadow
- park
- forest
- village_green
- recreation_ground
- forest
# There are 600 parks tagged with landuse=park instead of leisure=park
- park
natural:
- wetland
- grassland
leisure:
- park
wetland:
- bog
- swamp

Wyświetl plik

@ -1,112 +1,101 @@
CREATE OR REPLACE FUNCTION landuse_class(landuse TEXT, amenity TEXT, leisure TEXT, boundary TEXT) RETURNS TEXT AS $$
SELECT CASE
WHEN leisure IN ('nature_reserve', 'park') OR boundary='national_park' THEN 'park'
WHEN amenity IN ('school', 'university', 'kindergarten', 'college', 'library') THEN 'school'
WHEN landuse IN('hospital', 'railway', 'cemetery', 'military', 'residential') THEN landuse
ELSE NULL
END;
$$ LANGUAGE SQL IMMUTABLE;
-- etldoc: ne_50m_urban_areas -> landuse_z4
CREATE OR REPLACE VIEW landuse_z4 AS (
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, NULL::text AS boundary, scalerank
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, scalerank
FROM ne_50m_urban_areas
WHERE scalerank <= 2
);
-- etldoc: ne_50m_urban_areas -> landuse_z5
CREATE OR REPLACE VIEW landuse_z5 AS (
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, NULL::text AS boundary, scalerank
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, scalerank
FROM ne_50m_urban_areas
);
-- etldoc: ne_10m_urban_areas -> landuse_z6
CREATE OR REPLACE VIEW landuse_z6 AS (
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, NULL::text AS boundary, scalerank
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential'::text AS landuse, NULL::text AS amenity, NULL::text AS leisure, scalerank
FROM ne_10m_urban_areas
);
-- etldoc: osm_landuse_polygon_gen5 -> landuse_z8
CREATE OR REPLACE VIEW landuse_z8 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen5
);
-- etldoc: osm_landuse_polygon_gen4 -> landuse_z9
-- etldoc: osm_landuse_polygon_gen4 -> landuse_z10
CREATE OR REPLACE VIEW landuse_z9 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen4
SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank
FROM osm_landuse_polygon_gen4
);
-- etldoc: osm_landuse_polygon_gen3 -> landuse_z10
CREATE OR REPLACE VIEW landuse_z10 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen3
SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank
FROM osm_landuse_polygon_gen3
);
-- etldoc: osm_landuse_polygon_gen2 -> landuse_z11
CREATE OR REPLACE VIEW landuse_z11 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen2
SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank
FROM osm_landuse_polygon_gen2
);
-- etldoc: osm_landuse_polygon_gen1 -> landuse_z12
CREATE OR REPLACE VIEW landuse_z12 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon_gen1
SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank
FROM osm_landuse_polygon_gen1
);
-- etldoc: osm_landuse_polygon -> landuse_z13
CREATE OR REPLACE VIEW landuse_z13 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon
WHERE ST_Area(geometry) > 60000
SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank
FROM osm_landuse_polygon
WHERE ST_Area(geometry) > 20000
);
-- etldoc: osm_landuse_polygon -> landuse_z14
CREATE OR REPLACE VIEW landuse_z14 AS (
SELECT osm_id, geometry, landuse, amenity, leisure, boundary, NULL::int as scalerank FROM osm_landuse_polygon
SELECT osm_id, geometry, landuse, amenity, leisure, NULL::int as scalerank
FROM osm_landuse_polygon
);
-- etldoc: layer_landuse[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="layer_landuse |<z4> z4|<z5>z5|<z6>z6|<z7>z7| <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ;
-- etldoc: layer_landuse[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="layer_landuse |<z4> z4|<z5>z5|<z6>z6|<z7>z7| <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11|<z12> z12|<z13> z13|<z14> z14+" ] ;
CREATE OR REPLACE FUNCTION layer_landuse(bbox geometry, zoom_level int)
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$
RETURNS TABLE(osm_id bigint, geometry geometry, class text) AS $$
SELECT osm_id, geometry,
landuse_class(landuse, amenity, leisure, boundary) AS class,
COALESCE(NULLIF(landuse, ''), NULLIF(amenity, ''), NULLIF(leisure, ''), NULLIF(boundary, '')) AS subclass
COALESCE(
NULLIF(landuse, ''),
NULLIF(amenity, ''),
NULLIF(leisure, '')
) AS class
FROM (
-- etldoc: landuse_z4 -> layer_landuse:z4
SELECT * FROM landuse_z4
WHERE zoom_level = 4
UNION ALL
-- etldoc: landuse_z5 -> layer_landuse:z5
-- etldoc: landuse_z5 -> layer_landuse:z5
SELECT * FROM landuse_z5
WHERE zoom_level = 5
UNION ALL
-- etldoc: landuse_z6 -> layer_landuse:z6
-- etldoc: landuse_z6 -> layer_landuse:z7
-- etldoc: landuse_z6 -> layer_landuse:z8
-- etldoc: landuse_z6 -> layer_landuse:z9
-- etldoc: landuse_z6 -> layer_landuse:z10
SELECT * FROM landuse_z6
WHERE zoom_level BETWEEN 6 AND 10 AND scalerank-1 <= zoom_level
WHERE zoom_level BETWEEN 6 AND 8 AND scalerank-1 <= zoom_level
UNION ALL
-- etldoc: landuse_z8 -> layer_landuse:z8
SELECT * FROM landuse_z8 WHERE zoom_level = 8
UNION ALL
-- etldoc: landuse_z9 -> layer_landuse:z9
-- etldoc: landuse_z9 -> layer_landuse:z9
SELECT * FROM landuse_z9 WHERE zoom_level = 9
UNION ALL
-- etldoc: landuse_z10 -> layer_landuse:z10
-- etldoc: landuse_z10 -> layer_landuse:z10
SELECT * FROM landuse_z10 WHERE zoom_level = 10
UNION ALL
-- etldoc: landuse_z11 -> layer_landuse:z11
-- etldoc: landuse_z11 -> layer_landuse:z11
SELECT * FROM landuse_z11 WHERE zoom_level = 11
UNION ALL
-- etldoc: landuse_z12 -> layer_landuse:z12
-- etldoc: landuse_z12 -> layer_landuse:z12
SELECT * FROM landuse_z12 WHERE zoom_level = 12
UNION ALL
-- etldoc: landuse_z13 -> layer_landuse:z13
-- etldoc: landuse_z13 -> layer_landuse:z13
SELECT * FROM landuse_z13 WHERE zoom_level = 13
UNION ALL
-- etldoc: landuse_z14 -> layer_landuse:z14_
-- etldoc: landuse_z14 -> layer_landuse:z14
SELECT * FROM landuse_z14 WHERE zoom_level >= 14
) AS zoom_levels
WHERE geometry && bbox;

Wyświetl plik

@ -5,15 +5,31 @@ layer:
from Natural Earth data for residential (urban) areas and at higher zoom levels mostly OSM `landuse` tags.
buffer_size: 4
fields:
class: |
More generalized groups of either `park`, `school`, `hospital`, `railway`,
`cemetery`, `military`, `residential`. Use this to assign general for landuse.
subclass: |
Original value of either the `amenity`, `landuse`, `leisure` or `boundary` tag.
Use this to do more precise styling.
class:
description: |
Use the **class** to assign special colors to areas.
Original value of either the
[`amenity`](http://wiki.openstreetmap.org/wiki/Key:amenity),
[`landuse`](http://wiki.openstreetmap.org/wiki/Key:landuse),
or [`leisure`](http://wiki.openstreetmap.org/wiki/Key:leisure) tag.
values:
- school
- university
- kindergarten
- college
- library
- hospital
- railway
- cemetery
- military
- residential
- commercial
- industrial
- retail
- stadium
datasource:
geometry_field: geometry
query: (SELECT geometry, class, subclass FROM layer_landuse(!bbox!, z(!scale_denominator!))) AS t
query: (SELECT geometry, class FROM layer_landuse(!bbox!, z(!scale_denominator!))) AS t
schema:
- ./landuse.sql
datasources:

Wyświetl plik

@ -1,37 +1,26 @@
generalized_tables:
# etldoc: imposm3 -> osm_landuse_polygon_gen5
landuse_polygon_gen5:
source: landuse_polygon_gen4
sql_filter: area>15000000
tolerance: 300.0
# etldoc: imposm3 -> osm_landuse_polygon_gen4
# etldoc: imposm3 -> osm_landuse_polygon_gen4
landuse_polygon_gen4:
source: landuse_polygon_gen3
sql_filter: area>4200000
tolerance: 200.0
# etldoc: imposm3 -> osm_landuse_polygon_gen3
sql_filter: area>2000000
tolerance: 160.0
# etldoc: imposm3 -> osm_landuse_polygon_gen3
landuse_polygon_gen3:
source: landuse_polygon_gen2
sql_filter: area>1200000
tolerance: 120.0
# etldoc: imposm3 -> osm_landuse_polygon_gen2
sql_filter: area>960000
tolerance: 80.0
# etldoc: imposm3 -> osm_landuse_polygon_gen2
landuse_polygon_gen2:
source: landuse_polygon_gen1
sql_filter: area>480000
tolerance: 80.0
# etldoc: imposm3 -> osm_landuse_polygon_gen1
sql_filter: area>240000
tolerance: 40.0
# etldoc: imposm3 -> osm_landuse_polygon_gen1
landuse_polygon_gen1:
source: landuse_polygon
sql_filter: area>240000
tolerance: 50.0
sql_filter: area>60000
tolerance: 20.0
tables:
# etldoc: imposm3 -> osm_landuse_polygon
landuse_polygon:
type: polygon
@ -49,9 +38,6 @@ tables:
- name: leisure
key: leisure
type: string
- name: boundary
key: boundary
type: string
- name: area
type: pseudoarea
mapping:
@ -66,8 +52,10 @@ tables:
- railway
- cemetery
- military
# zoning
- residential
- commercial
- industrial
- retail
leisure:
- nature_reserve
- park
boundary:
- national_park
- stadium

Wyświetl plik

@ -0,0 +1,55 @@
-- etldoc: layer_park[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="layer_park |<z6> z6 |<z7> z7 |<z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14> z14+" ] ;
CREATE OR REPLACE FUNCTION layer_park(bbox geometry, zoom_level int)
RETURNS TABLE(osm_id bigint, geometry geometry, class text) AS $$
SELECT osm_id, geometry,
COALESCE(NULLIF(leisure, ''), NULLIF(boundary, '')) AS class
FROM (
-- etldoc: osm_park_polygon_gen8 -> layer_park:z6
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen8
WHERE zoom_level = 6
UNION ALL
-- etldoc: osm_park_polygon_gen7 -> layer_park:z7
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen7
WHERE zoom_level = 7
UNION ALL
-- etldoc: osm_park_polygon_gen6 -> layer_park:z8
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen6
WHERE zoom_level = 8
UNION ALL
-- etldoc: osm_park_polygon_gen5 -> layer_park:z9
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen5
WHERE zoom_level = 9
UNION ALL
-- etldoc: osm_park_polygon_gen4 -> layer_park:z10
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen4
WHERE zoom_level = 10
UNION ALL
-- etldoc: osm_park_polygon_gen3 -> layer_park:z11
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen3
WHERE zoom_level = 11
UNION ALL
-- etldoc: osm_park_polygon_gen2 -> layer_park:z12
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen2
WHERE zoom_level = 12
UNION ALL
-- etldoc: osm_park_polygon_gen1 -> layer_park:z13
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon_gen1
WHERE zoom_level = 13
UNION ALL
-- etldoc: osm_park_polygon -> layer_park:z14
SELECT osm_id, geometry, leisure, boundary, NULL::int as scalerank
FROM osm_park_polygon
WHERE zoom_level >= 14
) AS zoom_levels
WHERE geometry && bbox;
$$ LANGUAGE SQL IMMUTABLE;

Wyświetl plik

@ -0,0 +1,75 @@
generalized_tables:
# etldoc: imposm3 -> osm_park_polygon_gen8
park_polygon_gen8:
source: park_polygon_gen6
sql_filter: area>240000000
tolerance: 600.0
# etldoc: imposm3 -> osm_park_polygon_gen7
park_polygon_gen7:
source: park_polygon_gen6
sql_filter: area>60000000
tolerance: 400.0
# etldoc: imposm3 -> osm_park_polygon_gen6
park_polygon_gen6:
source: park_polygon_gen5
sql_filter: area>15000000
tolerance: 300.0
# etldoc: imposm3 -> osm_park_polygon_gen5
park_polygon_gen5:
source: park_polygon_gen4
sql_filter: area>4200000
tolerance: 200.0
# etldoc: imposm3 -> osm_park_polygon_gen4
park_polygon_gen4:
source: park_polygon_gen3
sql_filter: area>1200000
tolerance: 120.0
# etldoc: imposm3 -> osm_park_polygon_gen3
park_polygon_gen3:
source: park_polygon_gen2
sql_filter: area>480000
tolerance: 80.0
# etldoc: imposm3 -> osm_park_polygon_gen2
park_polygon_gen2:
source: park_polygon_gen1
sql_filter: area>240000
tolerance: 50.0
# etldoc: imposm3 -> osm_park_polygon_gen1
park_polygon_gen1:
source: park_polygon
sql_filter: area>60000
tolerance: 20.0
tables:
# etldoc: imposm3 -> osm_park_polygon
park_polygon:
type: polygon
fields:
- name: osm_id
type: id
- name: geometry
type: validated_geometry
- name: landuse
key: landuse
type: string
- name: leisure
key: leisure
type: string
- name: boundary
key: boundary
type: string
- name: area
type: pseudoarea
mapping:
leisure:
- nature_reserve
boundary:
- national_park

Wyświetl plik

@ -0,0 +1,20 @@
layer:
id: "park"
description: |
The park layer contains parks from OpenStreetMap tagged with either [`boundary=national_park`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dnational_park) or [`leisure=nature_reserve`](http://wiki.openstreetmap.org/wiki/Tag:leisure%3Dnature_reserve).
buffer_size: 4
fields:
class:
description: |
Use the **class** to differentiate between different parks.
values:
- national_park
- nature_reserve
datasource:
geometry_field: geometry
query: (SELECT geometry, class FROM layer_park(!bbox!, z(!scale_denominator!))) AS t
schema:
- ./layer.sql
datasources:
- type: imposm3
mapping_file: ./mapping.yaml

Wyświetl plik

@ -12,6 +12,7 @@ tileset:
- layers/water/water.yaml
- layers/waterway/waterway.yaml
- layers/landcover/landcover.yaml
- layers/park/park.yaml
- layers/landuse/landuse.yaml
name: OpenMapTiles v1.0
description: "A tileset showcasing all layers in OpenMapTiles. http://openmaptiles.org"