diff --git a/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java b/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java index c9c460fcdae6c090ea4c920df8c475338da0e82c..bb3d0bc71daf3d6efd3acbafcb09740bc1d9ca3f 100644 --- a/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java +++ b/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java @@ -112,7 +112,7 @@ private static String replaceEnvelopeInHeader(String header, Envelope envelope, double zMin = 0; double zMax = 0; Pattern boundedByPattern = Pattern.compile( - "(?is)<gml:boundedBy>.*?<gml:lowerCorner>(.*?)</gml:lowerCorner>\\s*<gml:upperCorner>(.*?)</gml:upperCorner>.*?</gml:boundedBy>"); + "(?is)<gml:boundedBy>.*?<gml:lowerCorner[^>]*>(.*?)</gml:lowerCorner>\\s*<gml:upperCorner[^>]*>(.*?)</gml:upperCorner>.*?</gml:boundedBy>"); Matcher matcher = boundedByPattern.matcher(header); String headerWithoutEnvelope = header; if (matcher.find()) { diff --git a/src/test/java/eu/simstadt/regionchooser/RegionExtractorTests.java b/src/test/java/eu/simstadt/regionchooser/RegionExtractorTests.java index 4a42ce2bf70d5dde045a86dcd0bd4fbbd236b212..e92efd30536367c408d3abc1ab8523bb586c9096 100644 --- a/src/test/java/eu/simstadt/regionchooser/RegionExtractorTests.java +++ b/src/test/java/eu/simstadt/regionchooser/RegionExtractorTests.java @@ -168,6 +168,7 @@ void testExtractBuildingsFrom2Citygmls() throws Throwable { void testExtractBuildingsAndRemoveOld() throws Throwable { String wktPolygon = "POLYGON((293229.6831819388 5623753.072371232,293681.22751166753 5623744.274551504,293668.8482257676 5623469.512992135,293197.09954629745 5623504.821467172,293229.6831819388 5623753.072371232))"; Path citygmlPath = TEST_REPOSITORY.resolve("Others.proj/Aachen_LoD2_293_5623_1_NW.gml"); + //NOTE: This file has <gml:lowerCorner srsDimension="3"> and not just <gml:lowerCorner>, which caused problems with parsing. StringWriter gmlWriter = new StringWriter(); int count = RegionExtractor.selectRegionDirectlyFromCityGML(wktPolygon, "EPSG:25832", gmlWriter, citygmlPath);