diff --git a/download_files_from_LGL_BW.py b/download_files_from_LGL_BW.py index 790653028730617c7b26e38201ee3844f5e68735..2c57c00664b0323fb6c577ca77147c7f6ee301e1 100644 --- a/download_files_from_LGL_BW.py +++ b/download_files_from_LGL_BW.py @@ -21,10 +21,13 @@ import re import urllib.request import time import zipfile +import re from pyproj import CRS from pyproj import Transformer +COORDINATES_REGEX = re.compile(r"(\-?\d+\.\d*) (\-?\d+\.\d*)") + ###### User input ########## POLYGONS = { "StuttgartCenter": "POLYGON((9.175287 48.780916, 9.185501 48.777522, 9.181467 48.773704, 9.174429 48.768472, 9.168807 48.773902, 9.175287 48.780916))", @@ -133,9 +136,11 @@ def extract_region(output_dir: Path, location_name: str, wkt: str) -> None: params_path = output_dir / 'params.txt' wkt_path = output_dir / 'region.wkt' + local_wkt = convert_wkt_to_local(wkt) + print(f" Extracting {output_file}.") with open(wkt_path, 'w') as f: - f.write(wkt) + f.write(local_wkt) with open(params_path, 'w') as f: f.write("--input\n") @@ -143,6 +148,7 @@ def extract_region(output_dir: Path, location_name: str, wkt: str) -> None: f.write("\n") f.write("--output\n") f.write(f'"{output_file}"\n') + f.write('--local\n') f.write("--wkt\n") f.write(f'"{wkt_path}"\n') @@ -154,7 +160,6 @@ def extract_region(output_dir: Path, location_name: str, wkt: str) -> None: capture_output=True ) if (result.stderr): - print("\n") print(result.stderr) if result.returncode != 0: raise ValueError(f"RegionChooser failed with code {result.returncode}") @@ -174,6 +179,14 @@ def main(polygons: dict[str, str]) -> None: extract_region(output_dir, location_name, wkt) print() +def show_coordinates(match): + longitude, latitude = match.groups() + transformer = Transformer.from_crs(WGS84, LOCAL_CRS, always_xy=True) + x, y = transformer.transform(longitude, latitude) + return f"{x} {y}" + +def convert_wkt_to_local(wkt): + return COORDINATES_REGEX.sub(show_coordinates, wkt) if __name__ == '__main__': main(POLYGONS)