58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
import json
|
|
import os
|
|
|
|
with open("data/boundaries/jordan_adm0.geojson", "r") as f:
|
|
adm0 = json.load(f)
|
|
|
|
with open("data/boundaries/jordan_adm1.geojson", "r") as f:
|
|
adm1 = json.load(f)
|
|
|
|
lines = []
|
|
lines.append("BEGIN;")
|
|
lines.append("-- 1. Delete previous dummy borders")
|
|
lines.append("DELETE FROM planet_osm_line WHERE osm_id >= 999000 AND osm_id <= 999999;")
|
|
lines.append("DELETE FROM planet_osm_polygon WHERE osm_id >= 999000 AND osm_id <= 999999;")
|
|
lines.append("")
|
|
|
|
# National border (ADM0)
|
|
geom0_str = json.dumps(adm0["features"][0]["geometry"]).replace("'", "''")
|
|
lines.append("-- 2. Official Jordan National Boundary (ADM0)")
|
|
lines.append(f"""INSERT INTO planet_osm_line (osm_id, boundary, admin_level, name, way)
|
|
SELECT
|
|
999000,
|
|
'administrative',
|
|
'2',
|
|
'المملكة الأردنية الهاشمية - Jordan Official National Border',
|
|
ST_Transform(ST_Boundary(ST_SetSRID(ST_GeomFromGeoJSON('{geom0_str}'), 4326)), 3857);
|
|
""")
|
|
|
|
# Governorates (ADM1)
|
|
for idx, feat in enumerate(adm1["features"]):
|
|
name = feat["properties"].get("shapeName", f"Governorate {idx}").replace("'", "''")
|
|
geom_str = json.dumps(feat["geometry"]).replace("'", "''")
|
|
osm_id = 999010 + idx
|
|
lines.append(f"""-- Governorate {name}
|
|
INSERT INTO planet_osm_polygon (osm_id, boundary, admin_level, name, way)
|
|
SELECT
|
|
{osm_id},
|
|
'administrative',
|
|
'4',
|
|
'{name}',
|
|
ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON('{geom_str}'), 4326), 3857);
|
|
|
|
INSERT INTO planet_osm_line (osm_id, boundary, admin_level, name, way)
|
|
SELECT
|
|
{osm_id},
|
|
'administrative',
|
|
'4',
|
|
'{name}',
|
|
ST_Transform(ST_Boundary(ST_SetSRID(ST_GeomFromGeoJSON('{geom_str}')), 4326), 3857);
|
|
""")
|
|
|
|
lines.append("COMMIT;")
|
|
|
|
with open("data/boundaries/import_official_jordan.sql", "w") as f:
|
|
f.write("\n".join(lines))
|
|
|
|
print(f"Generated SQL with {len(adm1['features'])} governorates + ADM0 national boundary.")
|