diff --git a/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js b/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js index ad41b7900aea88b76012f370596e26a5d6cd497b..f6710d62a5fc6f78a4a222d94817507634bf6020 100644 --- a/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js +++ b/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js @@ -231,7 +231,7 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388 features_and_intersections = features.map(f=> [f, findIntersection(f,polygon)]).filter(l => l[1] !== undefined); if (features_and_intersections.length > 0){ intersection_found = true; - dataPanel.append("<h2>" + project); + dataPanel.append("<h2 class='info'>" + project); features_and_intersections.forEach(l => showLinkToDownload(l[0], l[1], polygonArea)); } }); @@ -256,13 +256,17 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388 if (proj4.defs(srsName)){ $("html").addClass("wait"); console.log("Selected region is written in " + srsName + " coordinate system."); - fxapp.downloadRegionFromCityGML(sketchAsWKT(srsName), feature.get("project"), feature.get("name"), srsName); + try { + fxapp.downloadRegionFromCityGML(sketchAsWKT(srsName), feature.get("project"), feature.get("name"), srsName); + dataPanel.append("<h2 class='ok'>Done!</h2><br/>\n"); + } catch (e) { + dataPanel.append("<h2 class='error'>Some problem occured!</h2><br/>\n"); + } var end = new Date().getTime(); var time = end - start; console.log('Download Execution time: ' + (time / 1000).toFixed(3) + 's'); setTimeout(function() { $("html").removeClass("wait"); - dataPanel.append("Done<br/>\n"); }, 100); } else { var msg = "ERROR : Unknown coordinate system : \"" + srsName + "\". Cannot extract any region"; @@ -290,7 +294,7 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388 dataPanel.append("WGS84 Coordinates<br/>"); dataPanel.append(wgs84_coords + "<br/>\n"); } - dataPanel.append("<h3>Area : " + (area / 10000).toFixed(1) + " ha<br/><br/>\n"); + dataPanel.append("<h3 class='clean'>Area : " + (area / 10000).toFixed(1) + " ha\n"); findIntersections(); } @@ -382,7 +386,7 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388 function displayHelp(){ dataPanel.empty(); - dataPanel.append("Welcome to Region Chooser!<br><br>\n"); + dataPanel.append("<h2 class='info'>Welcome to Region Chooser!<br><br>\n"); dataPanel.append("You can draw a polygon on the map by clicking.<br>\n"); dataPanel.append("You can add a new point to an existing edge by clicking and dragging.<br>\n"); dataPanel.append("You can remove a point with SHIFT + clicking.<br>\n"); diff --git a/test/eu/simstadt/regionchooser/RegionExtractorTests.java b/test/eu/simstadt/regionchooser/RegionExtractorTests.java index 434b52809d51c741ff0a358040de866ed2d28307..3bab5a7d1e5ccf431d11fc10c72ba06e4c035dd1 100644 --- a/test/eu/simstadt/regionchooser/RegionExtractorTests.java +++ b/test/eu/simstadt/regionchooser/RegionExtractorTests.java @@ -124,5 +124,16 @@ public void testExtract0BuildingsFromWeirdGML() throws Throwable { assertTrue(emptyGMLString.contains("<core:CityModel")); // Header assertTrue(emptyGMLString.contains("</core:CityModel")); // Footer } + //TODO: Add BuildingParts tests with StuttgartAroundCampus. + @Test + public void testExtractBuildingsFromCitygmlWithBuildingParts() throws Throwable { + //NOTE: Small region, with too many spaces between coordinates + String wktPolygon = "POLYGON((3512683.1280912133 5404783.732132129,3512719.1608604863 5404714.627650777,3512831.40076119 5404768.344155442,3512790.239106708 5404838.614891164,3512683.1280912133 5404783.732132129))"; + Path repo = Paths.get("../TestRepository"); + Path citygmlPath = repo.resolve("Stuttgart.proj/Stuttgart_LOD0_LOD1_around_campus.gml"); + String emptyGMLString = RegionExtractor.selectRegionDirectlyFromCityGML(citygmlPath, wktPolygon, "EPSG:31463") + .toString(); + assertEquals(countRegexMatches(emptyGMLString, "<(core:)?cityObjectMember"), 2); + } }