diff --git a/download_LoD2_from_LGL_BW.py b/download_LoD2_from_LGL_BW.py index 002cc19d01a16651194b0b7d46ffcd50432a95a3..c13bdcfcf66e8d7edf9aaa843f1922e9ea9b10c2 100644 --- a/download_LoD2_from_LGL_BW.py +++ b/download_LoD2_from_LGL_BW.py @@ -164,15 +164,16 @@ def extract_region(output_dir: Path, location_name: str, wkt_str: str, simstadt_ f.write(local_wkt) with open(params_path, 'w', encoding='utf-8') as f: - f.write("--input\n") - f.write(','.join(f"{gml.as_posix()}" for gml in gml_inputs)) - f.write("\n") + f.write("--input\n\"") + f.write(','.join(f'{gml.as_posix()}' for gml in gml_inputs)) + f.write("\"\n") f.write("--output\n") f.write(f'"{output_file.as_posix()}"\n') f.write('--local\n') f.write("--wkt\n") f.write(f'"{wkt_path.as_posix()}"\n') + result = subprocess.run(['java', '-classpath', f'{region_chooser_libs}', 'eu.simstadt.regionchooser.RegionChooserCLI', f'@{params_path}' @@ -181,9 +182,9 @@ def extract_region(output_dir: Path, location_name: str, wkt_str: str, simstadt_ capture_output=True, check=False ) - if result.stderr: - logger.error("%s", result.stderr) if result.returncode != 0: + if result.stderr: + logger.error("%s", result.stderr) raise ValueError(f"RegionChooser failed with code {result.returncode}") logger.info(" DONE!") return output_file @@ -251,7 +252,7 @@ def main(location_name: str, wkt_or_zipcode: str, download_only: bool = False, # Validate location name if ' ' in location_name: - raise ValueError("Location name should not contain spaces: 'Some City' -> 'SomeCity'") + logger.warning("Location contains spaces, some workflows might fail.") if output_folder: output_folder = Path(output_folder) diff --git a/test_download_lod2.py b/test_download_lod2.py index 28d43a038bc6af8091f762f726e21fff2e568b93..f7f7d09a69cca23062a7fbbb7a2f3b38233eb346 100644 --- a/test_download_lod2.py +++ b/test_download_lod2.py @@ -9,6 +9,7 @@ import download_LoD2_from_LGL_BW as bw_data # Just a few buildings in Schwarzwald KALTENBRONN_WKT = "POLYGON ((8.4266 48.704415, 8.43926 48.704415, 8.43926 48.709031, 8.4266 48.709031, 8.4266 48.704415))" + class TestUtils(unittest.TestCase): def test_simstadt_is_available(self): self.assertIsNotNone(bw_data.find_simstadt_folder(), @@ -59,8 +60,14 @@ class TestGetOpenData(unittest.TestCase): self.assertIn("DEBW_B010000BSWW", content) def test_get_weird_name(self): - bw_data.main("WëÃrdNämeß", KALTENBRONN_WKT, - output_folder=self.tempFolder / 'Kaltenbronn.proj') + weird_name = "WëÃrdNämeß" + bw_data.main(weird_name, KALTENBRONN_WKT, + output_folder=self.tempFolder / f'{weird_name}.proj') + + def test_get_space_in_name(self): + name_with_space = "Two words" + bw_data.main(name_with_space, KALTENBRONN_WKT, + output_folder=self.tempFolder / f'{name_with_space}.proj') def test_only_download(self): gml_path = bw_data.main("JustDownload", KALTENBRONN_WKT, download_only=True, @@ -76,7 +83,7 @@ class TestGetOpenData(unittest.TestCase): def test_wrong_simstadt(self): self.assertRaisesRegex(ValueError, "RegionChooser failed", bw_data.main, "WrongSimStadt", KALTENBRONN_WKT, simstadt_folder="/Surely/Not/Here/", - output_folder=self.tempFolder / 'WrongSimStadt' + output_folder=self.tempFolder / 'WrongSimStadt' ) @classmethod