Package org.locationtech.jts.linearref
Class LinearIterator
- java.lang.Object
-
- org.locationtech.jts.linearref.LinearIterator
-
public class LinearIterator extends java.lang.Object
An iterator over the components and coordinates of a linear geometry (LineString
s andMultiLineString
s. The standard usage pattern for aLinearIterator
is:for (LinearIterator it = new LinearIterator(...); it.hasNext(); it.next()) { ... int ci = it.getComponentIndex(); // for example int vi = it.getVertexIndex(); // for example ... }
- Version:
- 1.7
-
-
Field Summary
Fields Modifier and Type Field Description private int
componentIndex
private LineString
currentLine
Invariant: currentLine <> null if the iterator is pointing at a valid coordinateprivate Geometry
linearGeom
private int
numLines
private int
vertexIndex
-
Constructor Summary
Constructors Constructor Description LinearIterator(Geometry linear)
Creates an iterator initialized to the start of a linearGeometry
LinearIterator(Geometry linearGeom, int componentIndex, int vertexIndex)
Creates an iterator starting at a specified component and vertex in a linearGeometry
LinearIterator(Geometry linear, LinearLocation start)
Creates an iterator starting at aLinearLocation
on a linearGeometry
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getComponentIndex()
The component index of the vertex the iterator is currently at.LineString
getLine()
Gets theLineString
component the iterator is current at.Coordinate
getSegmentEnd()
Gets the secondCoordinate
of the current segment.Coordinate
getSegmentStart()
Gets the firstCoordinate
of the current segment.int
getVertexIndex()
The vertex index of the vertex the iterator is currently at.boolean
hasNext()
Tests whether there are any vertices left to iterator over.boolean
isEndOfLine()
Checks whether the iterator cursor is pointing to the endpoint of a componentLineString
.private void
loadCurrentLine()
void
next()
Moves the iterator ahead to the next vertex and (possibly) linear component.private static int
segmentEndVertexIndex(LinearLocation loc)
-
-
-
Field Detail
-
linearGeom
private Geometry linearGeom
-
numLines
private final int numLines
-
currentLine
private LineString currentLine
Invariant: currentLine <> null if the iterator is pointing at a valid coordinate
-
componentIndex
private int componentIndex
-
vertexIndex
private int vertexIndex
-
-
Constructor Detail
-
LinearIterator
public LinearIterator(Geometry linear)
Creates an iterator initialized to the start of a linearGeometry
- Parameters:
linear
- the linear geometry to iterate over- Throws:
java.lang.IllegalArgumentException
- if linearGeom is not lineal
-
LinearIterator
public LinearIterator(Geometry linear, LinearLocation start)
Creates an iterator starting at aLinearLocation
on a linearGeometry
- Parameters:
linear
- the linear geometry to iterate overstart
- the location to start at- Throws:
java.lang.IllegalArgumentException
- if linearGeom is not lineal
-
LinearIterator
public LinearIterator(Geometry linearGeom, int componentIndex, int vertexIndex)
Creates an iterator starting at a specified component and vertex in a linearGeometry
- Parameters:
linearGeom
- the linear geometry to iterate overcomponentIndex
- the component to start atvertexIndex
- the vertex to start at- Throws:
java.lang.IllegalArgumentException
- if linearGeom is not lineal
-
-
Method Detail
-
segmentEndVertexIndex
private static int segmentEndVertexIndex(LinearLocation loc)
-
loadCurrentLine
private void loadCurrentLine()
-
hasNext
public boolean hasNext()
Tests whether there are any vertices left to iterator over. Specifically, hasNext() return true if the current state of the iterator represents a valid location on the linear geometry.- Returns:
true
if there are more vertices to scan
-
next
public void next()
Moves the iterator ahead to the next vertex and (possibly) linear component.
-
isEndOfLine
public boolean isEndOfLine()
Checks whether the iterator cursor is pointing to the endpoint of a componentLineString
.- Returns:
true
if the iterator is at an endpoint
-
getComponentIndex
public int getComponentIndex()
The component index of the vertex the iterator is currently at.- Returns:
- the current component index
-
getVertexIndex
public int getVertexIndex()
The vertex index of the vertex the iterator is currently at.- Returns:
- the current vertex index
-
getLine
public LineString getLine()
Gets theLineString
component the iterator is current at.- Returns:
- a linestring
-
getSegmentStart
public Coordinate getSegmentStart()
Gets the firstCoordinate
of the current segment. (the coordinate of the current vertex).- Returns:
- a
Coordinate
-
getSegmentEnd
public Coordinate getSegmentEnd()
Gets the secondCoordinate
of the current segment. (the coordinate of the next vertex). If the iterator is at the end of a line,null
is returned.- Returns:
- a
Coordinate
ornull
-
-