Simplify park classes

pull/1491/head
Brian Sperlongano 2023-02-06 21:35:28 -05:00
rodzic 624cf7a8a3
commit 1282fb1f90
5 zmienionych plików z 65 dodań i 41 usunięć

Wyświetl plik

@ -0,0 +1,11 @@
CREATE OR REPLACE FUNCTION park_class(boundary text, leisure text, landuse text, historic text)
RETURNS text AS
$$
SELECT CASE
WHEN boundary = 'national_park' THEN 'national_park'
WHEN leisure = 'nature_reserve' THEN 'nature_reserve'
WHEN landuse = 'recreation_ground' THEN 'recreation_ground'
WHEN historic <> '' THEN 'historic'
ELSE 'nature_reserve' END;
$$ LANGUAGE SQL IMMUTABLE
PARALLEL SAFE;

Wyświetl plik

@ -90,8 +90,8 @@ tables:
- name: boundary
key: boundary
type: string
- name: protection_title
key: protection_title
- name: historic
key: historic
type: string
- name: area
type: area
@ -101,3 +101,7 @@ tables:
boundary:
- national_park
- protected_area
historic:
- archaeological_site
- battlefield
- district

Plik binarny nie jest wyświetlany.

Przed

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

Po

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

Wyświetl plik

@ -26,11 +26,7 @@ SELECT osm_id,
FROM (
SELECT osm_id,
geometry,
COALESCE(
LOWER(REPLACE(NULLIF(protection_title, ''), ' ', '_')),
NULLIF(boundary, ''),
NULLIF(leisure, '')
) AS class,
park_class(boundary, leisure, landuse, historic) AS class,
name,
name_en,
name_de,
@ -45,8 +41,9 @@ FROM (
NULL AS name_de,
NULL AS tags,
NULL AS leisure,
NULL AS landuse,
NULL AS boundary,
NULL AS protection_title
NULL AS historic
FROM osm_park_polygon_dissolve_z4
WHERE zoom_level = 4
AND geometry && bbox
@ -59,8 +56,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z5
WHERE zoom_level = 5
AND geometry && bbox
@ -73,8 +71,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z6
WHERE zoom_level = 6
AND geometry && bbox
@ -87,8 +86,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z7
WHERE zoom_level = 7
AND geometry && bbox
@ -101,8 +101,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z8
WHERE zoom_level = 8
AND geometry && bbox
@ -115,8 +116,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z9
WHERE zoom_level = 9
AND geometry && bbox
@ -129,8 +131,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z10
WHERE zoom_level = 10
AND geometry && bbox
@ -143,8 +146,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z11
WHERE zoom_level = 11
AND geometry && bbox
@ -157,8 +161,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z12
WHERE zoom_level = 12
AND geometry && bbox
@ -171,8 +176,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon_gen_z13
WHERE zoom_level = 13
AND geometry && bbox
@ -185,8 +191,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title
historic
FROM osm_park_polygon
WHERE zoom_level >= 14
AND geometry && bbox
@ -195,11 +202,7 @@ FROM (
UNION ALL
SELECT osm_id,
geometry_point AS geometry,
COALESCE(
LOWER(REPLACE(NULLIF(protection_title, ''), ' ', '_')),
NULLIF(boundary, ''),
NULLIF(leisure, '')
) AS class,
park_class(boundary, leisure, landuse, historic) AS class,
name,
name_en,
name_de,
@ -220,8 +223,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z5
WHERE zoom_level = 5
@ -237,8 +241,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z6
WHERE zoom_level = 6
@ -254,8 +259,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z7
WHERE zoom_level = 7
@ -271,8 +277,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z8
WHERE zoom_level = 8
@ -288,8 +295,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z9
WHERE zoom_level = 9
@ -305,8 +313,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z10
WHERE zoom_level = 10
@ -322,8 +331,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z11
WHERE zoom_level = 11
@ -339,8 +349,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z12
WHERE zoom_level = 12
@ -356,8 +367,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon_gen_z13
WHERE zoom_level = 13
@ -373,8 +385,9 @@ FROM (
name_de,
tags,
leisure,
landuse,
boundary,
protection_title,
historic,
area
FROM osm_park_polygon
WHERE zoom_level >= 14

Wyświetl plik

@ -4,19 +4,14 @@ layer:
The park layer contains parks from OpenStreetMap tagged with
[`boundary=national_park`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dnational_park),
[`boundary=protected_area`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dprotected_area),
or [`leisure=nature_reserve`](http://wiki.openstreetmap.org/wiki/Tag:leisure%3Dnature_reserve).
[`leisure=nature_reserve`](http://wiki.openstreetmap.org/wiki/Tag:leisure%3Dnature_reserve),
or select values of [`historic=*`](http://wiki.openstreetmap.org/wiki/Key:historic).
buffer_size: 4
fields:
class:
description: |
Use the **class** to differentiate between different parks.
The class for `boundary=protected_area` parks is the lower-case of the
[`protection_title`](http://wiki.openstreetmap.org/wiki/key:protection_title)
value with blanks replaced by `_`.
`national_park` is the class of `protection_title=National Park` and `boundary=national_park`.
`nature_reserve` is the class of `protection_title=Nature Reserve` and `leisure=nature_reserve`.
The class for other [`protection_title`](http://wiki.openstreetmap.org/wiki/key:protection_title)
values is similarly assigned.
The class for `boundary=protected_area` parks is one of: `national_park`, `nature_reserve`, `recreation_ground`, or `historic`.
name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the park (point features only).
name_en: English name `name:en` if available, otherwise `name` (point features only).
name_de: German name `name:de` if available, otherwise `name` or `name:en` (point features only).
@ -25,6 +20,7 @@ layer:
geometry_field: geometry
query: (SELECT geometry, class, name, name_en, name_de, {name_languages}, rank FROM layer_park(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
schema:
- ./class.sql
- ./update_park_polygon.sql
- ./park.sql
datasources: