private static void addEdge(Coordinate[] coords, boolean isForward, CoordinateList coordList) {
   if (isForward) {
     for (int i = 0; i < coords.length; i++) {
       coordList.add(coords[i], false);
     }
   } else {
     for (int i = coords.length - 1; i >= 0; i--) {
       coordList.add(coords[i], false);
     }
   }
 }
 public Coordinate[] simplify() {
   usePt = new boolean[pts.length];
   for (int i = 0; i < pts.length; i++) {
     usePt[i] = true;
   }
   simplifySection(0, pts.length - 1);
   CoordinateList coordList = new CoordinateList();
   for (int i = 0; i < pts.length; i++) {
     if (usePt[i]) coordList.add(new Coordinate(pts[i]));
   }
   return coordList.toCoordinateArray();
 }
 /**
  * Computes the list of coordinates which are contained in this ring. The coordinatea are computed
  * once only and cached.
  *
  * @return an array of the {@link Coordinate}s in this ring
  */
 private Coordinate[] getCoordinates() {
   if (ringPts == null) {
     CoordinateList coordList = new CoordinateList();
     for (Iterator i = deList.iterator(); i.hasNext(); ) {
       DirectedEdge de = (DirectedEdge) i.next();
       PolygonizeEdge edge = (PolygonizeEdge) de.getEdge();
       addEdge(edge.getLine().getCoordinates(), de.getEdgeDirection(), coordList);
     }
     ringPts = coordList.toCoordinateArray();
   }
   return ringPts;
 }
Beispiel #4
0
  private void densify(Coordinate p0, Coordinate p1, double segLength) {
    double origLen = p1.distance(p0);
    int nPtsToAdd = (int) Math.floor(origLen / segLength);

    double delx = p1.x - p0.x;
    double dely = p1.y - p0.y;

    double segLenFrac = segLength / origLen;
    for (int i = 0; i <= nPtsToAdd; i++) {
      double addedPtFrac = i * segLenFrac;
      Coordinate pt = new Coordinate(p0.x + addedPtFrac * delx, p0.y + addedPtFrac * dely);
      newCoords.add(pt, false);
    }
    newCoords.add(new Coordinate(p1), false);
  }
Beispiel #5
0
  public Geometry densify(double segLength) {
    newCoords = new CoordinateList();

    CoordinateSequence seq = inputLine.getCoordinateSequence();

    Coordinate p0 = new Coordinate();
    Coordinate p1 = new Coordinate();
    seq.getCoordinate(0, p0);
    newCoords.add(new Coordinate(p0));

    for (int i = 0; i < seq.size() - 1; i++) {
      seq.getCoordinate(i, p0);
      seq.getCoordinate(i + 1, p1);
      densify(p0, p1, segLength);
    }
    Coordinate[] newPts = newCoords.toCoordinateArray();
    return inputLine.getFactory().createLineString(newPts);
  }