Water layer river mapping bug fixes (#1182)

This PR is a bugfix for the `water` layer.

* `waterway=stream`, `waterway=river`, `waterway=canal`, `waterway=ditch`, and `waterway=drain` are all linear features, not area features.  Thus, these objects are being unnecessarily mapped into the `osm_water_polygon` polygon table, and this PR removes these unneeded mappings.
* The combination `natural=water` + `water=river` is the most popular tagging for river areas.  However, the current mapping causes rivers tagged in this way to be rendered in the vector tiles as a `lake`.  This PR adds a check for the `water=river` tag and tags both variants of river areas as `class=river`.

`natural=water` + `water=river` river mapping:
![image](https://user-images.githubusercontent.com/3254090/129825551-388491de-549e-4843-80cc-01dba358c360.png)

`waterway=riverbank` river mapping:
![image](https://user-images.githubusercontent.com/3254090/129825618-4239eae7-a2bc-4a82-9931-fda2c02c2b40.png)


Lake mapping for a `natural=water` (with no other tagging):
![image](https://user-images.githubusercontent.com/3254090/129825554-9394b3d3-988a-4e92-a9f8-b198c695ec37.png)
pull/1192/head^2
Brian Sperlongano 2021-09-01 02:24:01 -04:00 zatwierdzone przez GitHub
rodzic 0e17d53f42
commit d427d58e36
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
5 zmienionych plików z 22 dodań i 17 usunięć

Wyświetl plik

@ -75,6 +75,9 @@ tables:
- name: waterway
key: waterway
type: string
- name: water
key: water
type: string
- name: is_intermittent
key: intermittent
type: bool
@ -95,11 +98,8 @@ tables:
- bay
- spring
waterway:
- river
- riverbank
- stream
- canal
- drain
- ditch
- dock
water:
- river
type: polygon

Plik binarny nie jest wyświetlany.

Przed

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

Po

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

Wyświetl plik

@ -1,8 +1,9 @@
CREATE OR REPLACE FUNCTION water_class(waterway text) RETURNS text AS
CREATE OR REPLACE FUNCTION water_class(waterway text, water text) RETURNS text AS
$$
SELECT CASE
WHEN waterway='riverbank' THEN 'river'
%%FIELD_MAPPING: class %%
ELSE 'river'
ELSE 'lake'
END;
$$ LANGUAGE SQL IMMUTABLE
PARALLEL SAFE;
@ -314,7 +315,7 @@ FROM osm_ocean_polygon_gen_z6
UNION ALL
-- etldoc: osm_water_polygon_gen_z6 -> water_z6
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
@ -334,7 +335,7 @@ FROM osm_ocean_polygon_gen_z7
UNION ALL
-- etldoc: osm_water_polygon_gen_z7 -> water_z7
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
@ -354,7 +355,7 @@ FROM osm_ocean_polygon_gen_z8
UNION ALL
-- etldoc: osm_water_polygon_gen_z8 -> water_z8
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
@ -374,7 +375,7 @@ FROM osm_ocean_polygon_gen_z9
UNION ALL
-- etldoc: osm_water_polygon_gen_z9 -> water_z9
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
@ -394,7 +395,7 @@ FROM osm_ocean_polygon_gen_z10
UNION ALL
-- etldoc: osm_water_polygon_gen_z10 -> water_z10
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
@ -414,7 +415,7 @@ FROM osm_ocean_polygon_gen_z11
UNION ALL
-- etldoc: osm_water_polygon_gen_z11 -> water_z11
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
NULL::boolean AS is_bridge,
NULL::boolean AS is_tunnel
@ -434,7 +435,7 @@ FROM osm_ocean_polygon_union
UNION ALL
-- etldoc: osm_water_polygon -> water_z12
SELECT geometry,
water_class(waterway) AS class,
water_class(waterway, water) AS class,
is_intermittent,
is_bridge,
is_tunnel

Wyświetl plik

@ -12,14 +12,18 @@ layer:
class:
description: |
All water polygons from [OpenStreetMapData](http://osmdata.openstreetmap.de/) have the class `ocean`.
Water bodies with the [`waterway`](http://wiki.openstreetmap.org/wiki/Key:waterway) tag are classified as `lake`, `dock`, or `river`.
Water bodies with the [`waterway=riverbank`](http://wiki.openstreetmap.org/wiki/Tag:waterway=riverbank)
or [`water=river`](http://wiki.openstreetmap.org/wiki/Tag:water=river) tag are classified as river. Wet and dry docks
tagged [`waterway=dock`](http://wiki.openstreetmap.org/wiki/Tag:waterway=dock) are classified as a `dock`.
All other water bodies are classified as `lake`.
values:
lake:
waterway: ['', 'lake']
dock:
waterway: 'dock'
river:
water: 'river'
waterway: 'riverbank'
lake:
waterway: ''
ocean:
intermittent:
description: |

Plik binarny nie jest wyświetlany.

Przed

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

Po

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