diff --git a/openavmkit/utilities/openstreetmap.py b/openavmkit/utilities/openstreetmap.py index 4a63188..450c4b5 100644 --- a/openavmkit/utilities/openstreetmap.py +++ b/openavmkit/utilities/openstreetmap.py @@ -80,7 +80,11 @@ def _get_tags(self, thing: str, config: dict = None): } elif thing == "rivers": return { - "water": ["river", "stream"] + # "water" tags polygon water *areas*; "waterway" tags the + # linestring river/stream features (how rivers are commonly + # mapped in OSM). Both are needed for full river coverage. + "water": ["river", "stream"], + "waterway": ["river", "stream"] } elif thing == "water": return { diff --git a/tests/test_osm_rivers_tags.py b/tests/test_osm_rivers_tags.py new file mode 100644 index 0000000..7fd6cd4 --- /dev/null +++ b/tests/test_osm_rivers_tags.py @@ -0,0 +1,12 @@ +from openavmkit.utilities.openstreetmap import OpenStreetMapService + + +def test_rivers_query_includes_waterway_linestrings(): + tags = OpenStreetMapService()._get_tags("rivers") + # waterway linestrings (the added coverage) — how rivers/streams are + # commonly mapped in OSM + assert "waterway" in tags + assert "river" in tags["waterway"] + assert "stream" in tags["waterway"] + # original polygon "water" coverage retained + assert "water" in tags