From 2c18bf0270a2b5fb6b7162f9a37e72eeab2c0bc9 Mon Sep 17 00:00:00 2001 From: Russell Richie Date: Mon, 22 Jun 2026 13:42:24 -0400 Subject: [PATCH] Capture waterway linestrings in the OSM rivers query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The built-in "rivers" query only matched polygon "water" areas (water=river/stream). Rivers and streams mapped as "waterway" linestrings — how rivers are commonly represented in OSM — were missed. Add the "waterway" river/stream tags so linestring river features are captured by proximity-to-rivers enrichment. Additive; no existing behavior removed. Co-Authored-By: Claude Opus 4.8 --- openavmkit/utilities/openstreetmap.py | 6 +++++- tests/test_osm_rivers_tags.py | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tests/test_osm_rivers_tags.py 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