@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");
    }
  }
Пример #3
0
  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();
  }