Introduce landuse classes
This commit is contained in:
parent
f65fded9f4
commit
bdea298990
@ -1,46 +1,57 @@
|
|||||||
|
CREATE OR REPLACE FUNCTION landuse_class(landuse TEXT, amenity TEXT) RETURNS TEXT AS $$
|
||||||
|
SELECT CASE
|
||||||
|
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;
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z4 AS (
|
CREATE OR REPLACE VIEW landuse_z4 AS (
|
||||||
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential' AS landuse, scalerank
|
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential' AS landuse, NULL::text AS amenity, scalerank
|
||||||
FROM ne_50m_urban_areas
|
FROM ne_50m_urban_areas
|
||||||
WHERE scalerank <= 2
|
WHERE scalerank <= 2
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z5 AS (
|
CREATE OR REPLACE VIEW landuse_z5 AS (
|
||||||
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential' AS landuse, scalerank
|
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential' AS landuse, NULL::text AS amenity, scalerank
|
||||||
FROM ne_50m_urban_areas
|
FROM ne_50m_urban_areas
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z6 AS (
|
CREATE OR REPLACE VIEW landuse_z6 AS (
|
||||||
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential' AS landuse, scalerank
|
SELECT NULL::bigint AS osm_id, geom AS geometry, 'residential' AS landuse, NULL::text AS amenity, scalerank
|
||||||
FROM ne_10m_urban_areas
|
FROM ne_10m_urban_areas
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z10 AS (
|
CREATE OR REPLACE VIEW landuse_z10 AS (
|
||||||
SELECT osm_id, geometry, landuse, NULL::int as scalerank FROM osm_landuse_polygon_gen2
|
SELECT osm_id, geometry, landuse, amenity, NULL::int as scalerank FROM osm_landuse_polygon_gen2
|
||||||
WHERE ST_Area(geometry) > 1200000
|
WHERE ST_Area(geometry) > 1200000
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z11 AS (
|
CREATE OR REPLACE VIEW landuse_z11 AS (
|
||||||
SELECT osm_id, geometry, landuse, NULL::int as scalerank FROM osm_landuse_polygon_gen2
|
SELECT osm_id, geometry, landuse, amenity, NULL::int as scalerank FROM osm_landuse_polygon_gen2
|
||||||
WHERE ST_Area(geometry) > 480000
|
WHERE ST_Area(geometry) > 480000
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z12 AS (
|
CREATE OR REPLACE VIEW landuse_z12 AS (
|
||||||
SELECT osm_id, geometry, landuse, NULL::int as scalerank FROM osm_landuse_polygon_gen1
|
SELECT osm_id, geometry, landuse, amenity, NULL::int as scalerank FROM osm_landuse_polygon_gen1
|
||||||
WHERE ST_Area(geometry) > 240000
|
WHERE ST_Area(geometry) > 240000
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z13 AS (
|
CREATE OR REPLACE VIEW landuse_z13 AS (
|
||||||
SELECT osm_id, geometry, landuse, NULL::int as scalerank FROM osm_landuse_polygon
|
SELECT osm_id, geometry, landuse, amenity, NULL::int as scalerank FROM osm_landuse_polygon
|
||||||
WHERE ST_Area(geometry) > 60000
|
WHERE ST_Area(geometry) > 60000
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW landuse_z14 AS (
|
CREATE OR REPLACE VIEW landuse_z14 AS (
|
||||||
SELECT osm_id, geometry, landuse, NULL::int as scalerank FROM osm_landuse_polygon
|
SELECT osm_id, geometry, landuse, amenity, NULL::int as scalerank FROM osm_landuse_polygon
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_landuse(bbox geometry, zoom_level int)
|
CREATE OR REPLACE FUNCTION layer_landuse(bbox geometry, zoom_level int)
|
||||||
RETURNS TABLE(osm_id bigint, geometry geometry, landuse text) AS $$
|
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text) AS $$
|
||||||
SELECT osm_id, geometry, landuse FROM (
|
SELECT osm_id, geometry,
|
||||||
|
landuse_class(landuse, amenity) AS class,
|
||||||
|
COALESCE(NULLIF(landuse, ''), NULLIF(amenity, '')) AS subclass
|
||||||
|
FROM (
|
||||||
SELECT * FROM landuse_z4
|
SELECT * FROM landuse_z4
|
||||||
WHERE zoom_level = 4
|
WHERE zoom_level = 4
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|||||||
@ -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.
|
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
|
buffer_size: 4
|
||||||
datasource:
|
datasource:
|
||||||
|
geometry_field: geometry
|
||||||
query: (SELECT * FROM layer_landuse(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT * FROM layer_landuse(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
- ./landuse.sql
|
- ./landuse.sql
|
||||||
|
|||||||
@ -16,14 +16,22 @@ tables:
|
|||||||
- name: geometry
|
- name: geometry
|
||||||
type: validated_geometry
|
type: validated_geometry
|
||||||
- name: landuse
|
- name: landuse
|
||||||
type: mapping_value
|
key: landuse
|
||||||
|
type: string
|
||||||
|
- name: amenity
|
||||||
|
key: amenity
|
||||||
|
type: string
|
||||||
- name: area
|
- name: area
|
||||||
type: pseudoarea
|
type: pseudoarea
|
||||||
mapping:
|
mapping:
|
||||||
amenity:
|
amenity:
|
||||||
- school
|
- school
|
||||||
|
- university
|
||||||
|
- kindergarten
|
||||||
|
- college
|
||||||
|
- library
|
||||||
- hospital
|
- hospital
|
||||||
landuse:
|
landuse:
|
||||||
- railway
|
- railway
|
||||||
- cemetry
|
- cemetery
|
||||||
- military
|
- military
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user