computeLinear method
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();
}