From 3e2339484a1775330c837e640f5b90861b10c75e Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Mon, 20 Feb 2023 16:59:07 +0100 Subject: [PATCH] Bugfix: Old envelope is deleted. --- src/main/java/eu/simstadt/regionchooser/RegionExtractor.java | 2 +- .../java/eu/simstadt/regionchooser/RegionExtractorTests.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java b/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java index c9c460f..bb3d0bc 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 4a42ce2..e92efd3 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); -- GitLab