CountyCollective Reference
Beacon WKT Converter
Original Python EPSG:2965 to EPSG:4326 WKT-to-GeoJSON conversion helper.
#!/usr/bin/env python3
"""Convert Beacon EPSG:2965 WKT geometry to EPSG:4326 GeoJSON geometry.
Input JSON on stdin:
{"wkt": "MULTIPOLYGON (...)"}
Output JSON on stdout:
{"ok": true, "geometry": {...}}
Requires:
pip install -r tools/gis/requirements.txt
"""
import json
import sys
try:
from pyproj import Transformer # type: ignore[reportMissingImports]
from shapely import wkt # type: ignore[reportMissingImports]
from shapely.geometry import mapping # type: ignore[reportMissingImports]
from shapely.ops import transform # type: ignore[reportMissingImports]
except Exception as exc: # pragma: no cover - surfaced to PHP admin UI.
print(json.dumps({"ok": False, "error": "Missing Python dependency: %s" % exc}))
sys.exit(1)
def main():
try:
payload = json.load(sys.stdin)
raw_wkt = payload.get("wkt", "")
if not raw_wkt:
raise ValueError("Missing WKT geometry.")
transformer = Transformer.from_crs("EPSG:2965", "EPSG:4326", always_xy=True)
geometry = wkt.loads(raw_wkt)
converted = transform(transformer.transform, geometry)
print(json.dumps({"ok": True, "geometry": mapping(converted)}, separators=(",", ":")))
except Exception as exc: # pragma: no cover - surfaced to PHP admin UI.
print(json.dumps({"ok": False, "error": str(exc)}))
sys.exit(1)
if __name__ == "__main__":
main()