diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserCommandLineInterface.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserCommandLineInterface.java index fb6469cbe05cba8347b05c697fc330a7f4fc0edb..abab71d4bfe57239cf2acc150b17fa15fc9c7d59 100644 --- a/src/main/java/eu/simstadt/regionchooser/RegionChooserCommandLineInterface.java +++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserCommandLineInterface.java @@ -6,11 +6,19 @@ import java.nio.file.Paths; import java.util.Scanner; import java.util.concurrent.Callable; +import org.locationtech.jts.geom.Polygon; +import org.locationtech.jts.io.WKTReader; +import org.locationtech.jts.io.WKTWriter; import org.osgeo.proj4j.CoordinateReferenceSystem; import picocli.CommandLine; import picocli.CommandLine.Command; import picocli.CommandLine.Option; +// Example usage: +// --input /home/ricou/Desktop/CGSC_Repository/Würzburg.proj/LoD2_566_5516_2_BY.gml,/home/ricou/Desktop/CGSC_Repository/Würzburg.proj/LoD2_568_5516_2_BY.gml +// --output /home/ricou/Desktop/output.gml +// --wkt /home/ricou/Desktop/grombuhl.txt + @Command(name = "region_chooser", mixinStandardHelpOptions = true, version = "regionChooser x.x", description = "Extracts a region from one or more citygmls.", sortOptions = false) class RegionChooserCommandLineInterface implements Callable<Integer> @@ -36,6 +44,8 @@ class RegionChooserCommandLineInterface implements Callable<Integer> @Override public Integer call() throws Exception { + //TODO: Move as much logic to utils as possible, and test it. + //TODO: Use logger CoordinateReferenceSystem localCRS; if (espgId == null) { @@ -43,6 +53,7 @@ public Integer call() throws Exception { } else { localCRS = RegionChooserUtils.crsFromSrsName("EPSG:" + espgId); } + System.out.println("Coordinate system is " + localCRS); String wktPolygon; @@ -60,13 +71,20 @@ public Integer call() throws Exception { } if (!localCoordinates) { + final WKTReader WKT_READER = new WKTReader(); + final WKTWriter WKT_WRITER = new WKTWriter(); // WKT coordinates are in WGS84, so should be first converted to srsName + Polygon wgs84Polygon = (Polygon) WKT_READER.read(wktPolygon); + wktPolygon = WKT_WRITER + .write(RegionChooserUtils.changePolygonCRS(wgs84Polygon, RegionChooserUtils.WGS84, localCRS)); } System.out.println("WKT Polygon : " + wktPolygon); StringBuilder sb = RegionExtractor.selectRegionDirectlyFromCityGML(wktPolygon, localCRS.toString(), citygmls); + //TODO: Check how many buildings are written. Warning if 0? + RegionChooserUtils.writeStringBuilderToFile(sb, outputCityGML); return 0;