kopia lustrzana https://github.com/openmaptiles/openmaptiles
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
rodzic
0e17d53f42
commit
d427d58e36
|
@ -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 |
|
@ -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
|
||||
|
|
|
@ -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 |
Ładowanie…
Reference in New Issue