computeLinear method

Geometry computeLinear(
  1. LinearLocation start,
  2. LinearLocation end
)

Assumes input is valid (e.g. start <= end)

@param start @param end @return a linear geometry

Implementation

Geometry computeLinear(LinearLocation start, LinearLocation end) {
  LinearGeometryBuilder builder =
      new LinearGeometryBuilder(line.getFactory());
  builder.setFixInvalidLines(true);

  if (!start.isVertex()) builder.add(start.getCoordinate(line));

  for (LinearIterator it = new LinearIterator.withStart(line, start);
      it.hasNext();
      it.next()) {
    if (end.compareLocationValues(
            it.getComponentIndex(), it.getVertexIndex(), 0.0) <
        0) break;

    Coordinate pt = it.getSegmentStart();
    builder.add(pt);
    if (it.isEndOfLine()) builder.endLine();
  }
  if (!end.isVertex()) builder.add(end.getCoordinate(line));

  return builder.getGeometry();
}