aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/update-nearby-facilities.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/update-nearby-facilities.py')
-rw-r--r--scripts/update-nearby-facilities.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/scripts/update-nearby-facilities.py b/scripts/update-nearby-facilities.py
index dcef5d6..2e25bc3 100644
--- a/scripts/update-nearby-facilities.py
+++ b/scripts/update-nearby-facilities.py
@@ -109,9 +109,27 @@ def address_of(tags):
return city
+def existing_cities():
+ """前回の出力に手動で補完した city を保持する。"""
+ if not os.path.exists(OUT):
+ return {}
+ try:
+ data = json.load(open(OUT, encoding="utf-8"))
+ except (OSError, ValueError):
+ return {}
+ result = {}
+ for item in data:
+ key = (item.get("osm_type"), item.get("osm_id"))
+ city = (item.get("city") or "").strip()
+ if city:
+ result[key] = city
+ return result
+
+
def main():
print("Overpass API から近隣施設を取得中...")
elements = fetch_overpass()
+ city_by_key = existing_cities()
np = load_module(os.path.join(ROOT, "scripts", "update-nearby-parks.py"), "nearby_parks")
boundary_ll = np.load_boundary()
@@ -160,7 +178,8 @@ def main():
"lat": lat,
"lon": lon,
"geocode": "OSM",
- "city": (tags.get("addr:city") or "").strip(),
+ "city": (tags.get("addr:city") or "").strip()
+ or city_by_key.get((el.get("type"), el.get("id")), ""),
"distance_m": int(round(distance)),
"osm_type": el.get("type"),
"osm_id": el.get("id"),