Address rename detection with Accept Rename tag-edit export, hover-to-toggle snap dots, cross-layer click fix, fix county street naming (Saint, County Road, Parkway), and keep OSM ids in address downloads
This commit is contained in:
+19
-3
@@ -50,11 +50,13 @@ def build_overpass_query(county_name, state_name, data_type="highways"):
|
||||
# Addresses: include nwr so building ways and relations are captured too,
|
||||
# but use "out center;" instead of "out geom;" so ways/relations return a
|
||||
# single centroid rather than their full coordinate list — much smaller payload.
|
||||
# "meta" adds each element's version, so the map viewer can export edits
|
||||
# (e.g. fixing addr:street) to the existing element instead of replacing it.
|
||||
if data_type == "addresses":
|
||||
query = f"""[out:json][timeout:180];
|
||||
area(id:{area_id})->.searchArea;
|
||||
nwr["addr:housenumber"](area.searchArea);
|
||||
out center;"""
|
||||
out meta center;"""
|
||||
return query
|
||||
|
||||
base_query = f"""[out:json][timeout:180];
|
||||
@@ -145,9 +147,13 @@ def convert_to_geojson(overpass_data):
|
||||
if element["type"] == "node":
|
||||
if not element.get("tags"):
|
||||
continue # Skip topology-only nodes (no tags); versions collected above
|
||||
props = dict(element["tags"])
|
||||
props["osm_id"] = element["id"]
|
||||
props["osm_type"] = "node"
|
||||
props["osm_version"] = element.get("version", 1)
|
||||
feature = {
|
||||
"type": "Feature",
|
||||
"properties": element.get("tags", {}),
|
||||
"properties": props,
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [element["lon"], element["lat"]]
|
||||
@@ -177,10 +183,20 @@ def convert_to_geojson(overpass_data):
|
||||
features.append(feature)
|
||||
elif "center" in element:
|
||||
# out center; — single centroid point (used for addresses on buildings)
|
||||
# Node refs / members are kept so the element can be exported
|
||||
# as a tag-only modify without re-downloading it.
|
||||
c = element["center"]
|
||||
props = dict(element.get("tags", {}))
|
||||
props["osm_id"] = element["id"]
|
||||
props["osm_type"] = element["type"]
|
||||
props["osm_version"] = element.get("version", 1)
|
||||
if "nodes" in element:
|
||||
props["osm_nodes"] = element["nodes"]
|
||||
if "members" in element:
|
||||
props["osm_members"] = element["members"]
|
||||
feature = {
|
||||
"type": "Feature",
|
||||
"properties": element.get("tags", {}),
|
||||
"properties": props,
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [c["lon"], c["lat"]]
|
||||
|
||||
Reference in New Issue
Block a user