kopia lustrzana https://github.com/openmaptiles/openmaptiles
Introduce landcover classes
rodzic
15a61983ae
commit
f65fded9f4
|
@ -1,41 +1,48 @@
|
|||
CREATE OR REPLACE FUNCTION landcover_class(landuse VARCHAR, "natural" 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"='wetland' OR wetland IN ('bog', 'swamp', 'wet_meadow', 'marsh', 'reedbed', 'saltern', 'tidalflat', 'saltmarsh', 'mangrove') THEN 'wetland'
|
||||
ELSE NULL
|
||||
END;
|
||||
$$ LANGUAGE SQL IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z0 AS (
|
||||
SELECT NULL::int AS osm_id, geom AS geometry, 'glacier' AS landuse, NULL AS "natural", NULL AS wetland FROM ne_110m_glaciated_areas
|
||||
SELECT NULL::int AS osm_id, geom AS geometry, NULL AS landuse, 'glacier' AS "natural", NULL::text AS wetland FROM ne_110m_glaciated_areas
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z2 AS (
|
||||
SELECT NULL::int AS osm_id, geom AS geometry, 'glacier' AS landuse, NULL AS "natural", NULL AS wetland FROM ne_50m_glaciated_areas
|
||||
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier' AS "natural", NULL::text AS wetland FROM ne_50m_glaciated_areas
|
||||
UNION ALL
|
||||
SELECT NULL::int AS osm_id, geom AS geometry, 'ice_shelf' AS landuse, NULL AS "natural", NULL AS wetland FROM ne_50m_antarctic_ice_shelves_polys
|
||||
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'ice_shelf' AS "natural", NULL::text AS wetland FROM ne_50m_antarctic_ice_shelves_polys
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z5 AS (
|
||||
SELECT NULL::int AS osm_id, geom AS geometry, 'glacier' AS landuse, NULL AS "natural", NULL AS wetland FROM ne_10m_glaciated_areas
|
||||
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'glacier' AS "natural", NULL::text AS wetland FROM ne_10m_glaciated_areas
|
||||
UNION ALL
|
||||
SELECT NULL::int AS osm_id, geom AS geometry, 'ice_shelf' AS landuse, NULL AS "natural", NULL AS wetland FROM ne_10m_antarctic_ice_shelves_polys
|
||||
SELECT NULL::bigint AS osm_id, geom AS geometry, NULL::text AS landuse, 'ice_shelf' AS "natural", NULL::text AS wetland FROM ne_10m_antarctic_ice_shelves_polys
|
||||
);
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z8 AS (
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon
|
||||
WHERE ST_Area(geometry) > 15000000
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen5
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z9 AS (
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon
|
||||
WHERE ST_Area(geometry) > 4200000
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen4
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z10 AS (
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon
|
||||
WHERE ST_Area(geometry) > 1200000
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen3
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z11 AS (
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon WHERE ST_Area(geometry) > 480000
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen2
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z12 AS (
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon WHERE ST_Area(geometry) > 240000
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM osm_landcover_polygon_gen1
|
||||
);
|
||||
|
||||
CREATE OR REPLACE VIEW landcover_z13 AS (
|
||||
|
@ -47,8 +54,11 @@ CREATE OR REPLACE VIEW landcover_z14 AS (
|
|||
);
|
||||
|
||||
CREATE OR REPLACE FUNCTION layer_landcover(bbox geometry, zoom_level int)
|
||||
RETURNS TABLE(osm_id bigint, geom geometry, landuse text, "natural" text, wetland text) AS $$
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland FROM (
|
||||
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
|
||||
FROM (
|
||||
SELECT * FROM landcover_z0
|
||||
WHERE zoom_level BETWEEN 0 AND 1 AND geometry && bbox
|
||||
UNION ALL
|
||||
|
@ -58,19 +68,19 @@ RETURNS TABLE(osm_id bigint, geom geometry, landuse text, "natural" text, wetlan
|
|||
SELECT * FROM landcover_z5
|
||||
WHERE zoom_level BETWEEN 5 AND 7 AND geometry && bbox
|
||||
UNION ALL
|
||||
SELECT osm_id, ST_Simplify(geometry, 300) AS geometry, landuse, "natural", wetland
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland
|
||||
FROM landcover_z8 WHERE zoom_level = 8 AND geometry && bbox
|
||||
UNION ALL
|
||||
SELECT osm_id, ST_Simplify(geometry, 200) AS geometry, landuse, "natural", wetland
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland
|
||||
FROM landcover_z9 WHERE zoom_level = 9 AND geometry && bbox
|
||||
UNION ALL
|
||||
SELECT osm_id, ST_Simplify(geometry, 120) AS geometry, landuse, "natural", wetland
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland
|
||||
FROM landcover_z10 WHERE zoom_level = 10 AND geometry && bbox
|
||||
UNION ALL
|
||||
SELECT osm_id, ST_Simplify(geometry, 80) AS geometry, landuse, "natural", wetland
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland
|
||||
FROM landcover_z11 WHERE zoom_level = 11 AND geometry && bbox
|
||||
UNION ALL
|
||||
SELECT osm_id, ST_Simplify(geometry, 50) AS geometry, landuse, "natural", wetland
|
||||
SELECT osm_id, geometry, landuse, "natural", wetland
|
||||
FROM landcover_z12 WHERE zoom_level = 12 AND geometry && bbox
|
||||
UNION ALL
|
||||
SELECT osm_id, ST_Simplify(geometry, 10) AS geometry, landuse, "natural", wetland
|
||||
|
@ -80,4 +90,3 @@ RETURNS TABLE(osm_id bigint, geom geometry, landuse text, "natural" text, wetlan
|
|||
FROM landcover_z14 WHERE zoom_level >= 14 AND geometry && bbox
|
||||
) AS zoom_levels;
|
||||
$$ LANGUAGE SQL IMMUTABLE;
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ layer:
|
|||
description: Landcover is used to describe the physical material at the surface of the earth. Land covers include grass, asphalt, trees, bare ground etc. Tagging of landcover is often only implied by other tags at present, for example a park may be assumed to be covered in grass, but in some places this may in fact be trees or sand or some other cover. The following keys imply or specifically indicate landcover properties.
|
||||
buffer_size: 4
|
||||
datasource:
|
||||
geometry_field: geometry
|
||||
query: (SELECT * FROM layer_landcover(!bbox!, z(!scale_denominator!))) AS t
|
||||
schema:
|
||||
- ./landcover.sql
|
||||
|
|
|
@ -1,11 +1,23 @@
|
|||
generalized_tables:
|
||||
landcover_polygon_gen0:
|
||||
source: landcover_polygon_gen1
|
||||
sql_filter: area>500000.000000
|
||||
landcover_polygon_gen5:
|
||||
source: landcover_polygon_gen4
|
||||
sql_filter: area>15000000
|
||||
tolerance: 300.0
|
||||
landcover_polygon_gen4:
|
||||
source: landcover_polygon_gen3
|
||||
sql_filter: area>4200000
|
||||
tolerance: 200.0
|
||||
landcover_polygon_gen3:
|
||||
source: landcover_polygon_gen2
|
||||
sql_filter: area>1200000
|
||||
tolerance: 120.0
|
||||
landcover_polygon_gen2:
|
||||
source: landcover_polygon_gen1
|
||||
sql_filter: area>480000
|
||||
tolerance: 80.0
|
||||
landcover_polygon_gen1:
|
||||
source: landcover_polygon
|
||||
sql_filter: area>50000.000000
|
||||
sql_filter: area>240000
|
||||
tolerance: 50.0
|
||||
tables:
|
||||
landcover_polygon:
|
||||
|
@ -31,7 +43,6 @@ tables:
|
|||
- farm
|
||||
- farmland
|
||||
- orchard
|
||||
- greenhouse_horticulture
|
||||
- plant_nursery
|
||||
- vineyard
|
||||
- grass
|
||||
|
@ -41,28 +52,17 @@ tables:
|
|||
- village_green
|
||||
- recreation_ground
|
||||
- forest
|
||||
- beach
|
||||
- greenfield
|
||||
natural:
|
||||
- wetland
|
||||
- gravel
|
||||
- sand
|
||||
- wood
|
||||
- scrub
|
||||
- mud
|
||||
- beach
|
||||
- rock
|
||||
- bare_rock
|
||||
- scree
|
||||
- grassland
|
||||
- heath
|
||||
- fell
|
||||
wetland:
|
||||
- saltmarsh
|
||||
- reedbed
|
||||
- bog
|
||||
- marsh
|
||||
- mangrove
|
||||
- swamp
|
||||
- wet_meadow
|
||||
- marsh
|
||||
- reedbed
|
||||
- saltern
|
||||
- tidalflat
|
||||
- saltmarsh
|
||||
- mangrove
|
||||
type: polygon
|
||||
|
|
Ładowanie…
Reference in New Issue