computeMinDistanceLinePointList method

void computeMinDistanceLinePointList(
  1. LineString line,
  2. Point pt,
  3. List<GeometryLocation?> locGeom
)

Implementation

void computeMinDistanceLinePointList(
    LineString line, Point pt, List<GeometryLocation?> locGeom) {
  if (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) >
      minDistance) return;
  List<Coordinate> coord0 = line.getCoordinates();
  Coordinate coord = pt.getCoordinate()!;
  // brute force approach!
  for (int i = 0; i < coord0.length - 1; i++) {
    double dist = Distance.pointToSegment(coord, coord0[i], coord0[i + 1]);
    if (dist < minDistance) {
      minDistance = dist;
      LineSegment seg =
          new LineSegment.fromCoordinates(coord0[i], coord0[i + 1]);
      Coordinate segClosestPoint = seg.closestPoint(coord);
      locGeom[0] = new GeometryLocation(line, i, segClosestPoint);
      locGeom[1] = new GeometryLocation(pt, 0, coord);
    }
    if (minDistance <= terminateDistance) return;
  }
}