aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/import-manual-parks.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/import-manual-parks.py')
-rw-r--r--scripts/import-manual-parks.py48
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,
}
)