@Test public void testMultiPolygon() throws SQLException { logger.trace("void testMultiPolygon()"); logger.info(mplg_str); MultiPolygon mplg = new MultiPolygon(mplg_str); logger.info(mplg.toString()); }
public void testMultiPolygon() throws Exception { MultiPolygon multiPolygon = new MultiPolygon(); { Polygon polygon = new Polygon(); LineString linearRing = new LineString(); linearRing.addPoint(new Point(0, 0)); linearRing.addPoint(new Point(0, 10)); linearRing.addPoint(new Point(10, 10)); linearRing.addPoint(new Point(0, 0)); polygon.addLinearRing(linearRing); multiPolygon.addPolygon(polygon); } { Polygon polygon = new Polygon(); LineString linearRing = new LineString(); linearRing.addPoint(new Point(100, 0)); linearRing.addPoint(new Point(100, 10)); linearRing.addPoint(new Point(110, 10)); linearRing.addPoint(new Point(100, 0)); polygon.addLinearRing(linearRing); multiPolygon.addPolygon(polygon); } StringWriter sw = new StringWriter(); JSONWriter jsonWriter = new JSONWriter(sw); GeoJsonGeometryWriter geoWriter = new GeoJsonGeometryWriter(); geoWriter.writeGeometry(jsonWriter, multiPolygon); if (false == "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[0,0],[0,10],[10,10],[0,0]]],[[[100,0],[100,10],[110,10],[100,0]]]]}" .equals(sw.toString())) { fail("Unexpected output"); } }
private static void generateNFPsForList(File[] listOfFiles, int rotations) throws FileNotFoundException { int n = 0; List<MultiPolygon> polygonsList = new ArrayList<>(); int numberOfPolys = 100; MultiPolygon original; MultiPolygon inverse; MultiPolygon ninety; MultiPolygon twoseventy; for (File polygon : listOfFiles) { if (n == numberOfPolys) break; switch (rotations) { case 1: polygonsList.add(new MultiPolygon(polygon)); break; case 2: original = new MultiPolygon(polygon); inverse = new MultiPolygon(polygon); inverse.replaceByNegative(); polygonsList.add(original); polygonsList.add(inverse); break; case 4: original = new MultiPolygon(polygon); inverse = new MultiPolygon(polygon); inverse.replaceByNegative(); ninety = new MultiPolygon(polygon); ninety.shiftNinety(); twoseventy = new MultiPolygon(polygon); twoseventy.shiftNinety(); polygonsList.add(original); polygonsList.add(inverse); polygonsList.add(ninety); polygonsList.add(twoseventy); break; default: polygonsList.add(new MultiPolygon(polygon)); break; } n++; } System.out.println(n); long startTime; long endTime; long duration; int totalIts = 0; startTime = System.currentTimeMillis(); long startMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); for (MultiPolygon stat : polygonsList) { for (MultiPolygon orb : polygonsList) { Minkowski.generateMinkowskiNFP(new MultiPolygon(stat), new MultiPolygon(orb)); totalIts++; } } long endMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); long diffMemory = endMemory - startMemory; endTime = System.currentTimeMillis(); duration = (endTime - startTime); System.out.println("current total: " + totalIts); System.out.println("fails: " + Minkowski.numberOfFails); System.out.println("infinite stuck: " + Minkowski.numberStuckInfinite); System.out.println("duration: " + duration + " ms"); System.out.println("total itterations: " + totalIts); System.out.println("Memory used: " + diffMemory); Minkowski.numberOfFails = 0; Minkowski.numberStuckInfinite = 0; System.out.println(); }