Files
maps-saas/data/boundaries/generate_sql.py
T

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.")