addLineString method

void addLineString(
  1. LineString line
)

Implementation

void addLineString(LineString line) {
  // a zero or negative width buffer of a line/point is empty
  if (distance <= 0.0 && !curveBuilder.getBufferParameters().isSingleSided)
    return;
  List<Coordinate> coord =
      CoordinateArrays.removeRepeatedPoints(line.getCoordinates());

  /**
   * Rings (closed lines) are generated with a continuous curve,
   * with no end arcs. This produces better quality linework,
   * and avoids noding issues with arcs around almost-parallel end segments.
   * See JTS #523 and #518.
   *
   * Singled-sided buffers currently treat rings as if they are lines.
   */
  if (CoordinateArrays.isRing(coord) &&
      !curveBuilder.getBufferParameters().isSingleSided) {
    addRingBothSides(coord, distance);
  } else {
    List<Coordinate>? curve = curveBuilder.getLineCurve(coord, distance);
    addCurve(curve, Location.EXTERIOR, Location.INTERIOR);
  }

  // TESTING
  //List<Coordinate> curveTrim = BufferCurveLoopPruner.prune(curve);
  //addCurve(curveTrim, Location.EXTERIOR, Location.INTERIOR);
}