diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-29 14:44:19 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-29 14:44:19 +0900 |
| commit | 17f6009bfc6589d43e10233040b125675d24c5c8 (patch) | |
| tree | 8f6606e4b5b086e3e61792a6965b27867bed5c18 /scripts/import-manual-parks.py | |
| parent | cf5468ffaef1b43e5cc529af2d072f1f08af9ba4 (diff) | |
parks: 複数ポリゴンとOSMポリゴンの置き換えに対応
同じ公園名の複数ポリゴンをまとめてズーム・アイコン表示する。import-manual-parks.py に --override-name を追加し、手入力ポリゴンでOSMを置き換えられるようにした。草地広場・多目的広場を一覧の検索・ピクニック絞り込みに反映。
Diffstat (limited to 'scripts/import-manual-parks.py')
| -rw-r--r-- | scripts/import-manual-parks.py | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/scripts/import-manual-parks.py b/scripts/import-manual-parks.py index 7eb3f1c..1061148 100644 --- a/scripts/import-manual-parks.py +++ b/scripts/import-manual-parks.py @@ -199,9 +199,17 @@ def main(): metavar="公園名", help="指定した公園だけ、OSM側にポリゴンがあっても取り込む(複数指定可)", ) + ap.add_argument( + "--override-name", + action="append", + default=[], + metavar="公園名", + help="手入力ポリゴンでOSM側のポリゴンを置き換える(複数指定可)", + ) ap.add_argument("--update-parks", action="store_true", help="kodaira-parks.json の空の緯度・経度を重心で埋める") args = ap.parse_args() force_names = set(args.force_name or []) + override_names = set(args.override_name or []) if not os.path.exists(args.input): sys.exit(f"入力が見つかりません: {args.input}") @@ -241,6 +249,12 @@ def main(): osm_areas[name] = osm_areas.get(name, 0.0) + area_m2(f["geometry"]) manual_features = manual.get("features") or [] manual_names = {f["properties"].get("our_name") for f in manual_features} + existing_override = {} + for f in manual_features: + p = f.get("properties") or {} + name = p.get("our_name") + if name and str(p.get("override", "")).lower() in ("1", "true"): + existing_override[name] = True errors = [] warnings = [] @@ -321,8 +335,21 @@ def main(): ) continue + override = ( + str(props.get("override", "")).lower() in ("1", "true") + or name in override_names + or existing_override.get(name, False) + ) resolved.append( - {"name": name, "method": method, "geom": geom, "area": area, "lat": lat, "lon": lon} + { + "name": name, + "method": method, + "geom": geom, + "area": area, + "lat": lat, + "lon": lon, + "override": override, + } ) if errors and not args.allow_partial: @@ -365,17 +392,20 @@ def main(): for item in items: geom = item["geom"] geom["coordinates"] = round_coords(geom["coordinates"]) + properties = { + "name": "", + "our_name": name, + "matched": True, + "osm_type": "manual", + "osm_id": osm_id, + "leisure": "park", + } + if item.get("override"): + properties["override"] = True new_features.append( { "type": "Feature", - "properties": { - "name": "", - "our_name": name, - "matched": True, - "osm_type": "manual", - "osm_id": osm_id, - "leisure": "park", - }, + "properties": properties, "geometry": geom, } ) |
