com.vividsolutions.jts.linearref

Class LinearLocation

Implemented Interfaces:
Comparable

public class LinearLocation
extends java.lang.Object
implements Comparable

Represents a location along a LineString or MultiLineString. The referenced geometry is not maintained within this location, but must be provided for operations which require it. Various methods are provided to manipulate the location value and query the geometry it references.

Constructor Summary

LinearLocation()
Creates a location referring to the start of a linear geometry
LinearLocation(int segmentIndex, double segmentFraction)
LinearLocation(int componentIndex, int segmentIndex, double segmentFraction)

Method Summary

void
clamp(Geometry linear)
Ensures the indexes are valid for a given linear Geometry.
Object
clone()
Copies this location
int
compareLocationValues(int componentIndex1, int segmentIndex1, double segmentFraction1)
Compares this object with the specified index values for order.
static int
compareLocationValues(int componentIndex0, int segmentIndex0, double segmentFraction0, int componentIndex1, int segmentIndex1, double segmentFraction1)
Compares two sets of location values for order.
int
compareTo(Object o)
Compares this object with the specified object for order.
int
getComponentIndex()
Gets the component index for this location.
Coordinate
getCoordinate(Geometry linearGeom)
Gets the Coordinate along the given linear Geometry which is referenced by this location.
static LinearLocation
getEndLocation(Geometry linear)
Gets a location which refers to the end of a linear Geometry.
double
getSegmentFraction()
Gets the segment fraction for this location
int
getSegmentIndex()
Gets the segment index for this location
double
getSegmentLength(Geometry linearGeom)
Gets the length of the segment in the given Geometry containing this location.
boolean
isValid(Geometry linearGeom)
Tests whether this location refers to a valid location on the given linear Geometry.
boolean
isVertex()
Tests whether this location refers to a vertex
static Coordinate
pointAlongSegmentByFraction(Coordinate p0, Coordinate p1, double frac)
Computes the Coordinate of a point a given fraction along the line segment (p0, p1).
void
setToEnd(Geometry linear)
Sets the value of this location to refer the end of a linear geometry
void
snapToVertex(Geometry linearGeom, double minDistance)
Snaps the value of this location to the nearest vertex on the given linear Geometry, if the vertex is closer than maxDistance.

Constructor Details

LinearLocation

public LinearLocation()
Creates a location referring to the start of a linear geometry

LinearLocation

public LinearLocation(int segmentIndex,
                      double segmentFraction)

LinearLocation

public LinearLocation(int componentIndex,
                      int segmentIndex,
                      double segmentFraction)

Method Details

clamp

public void clamp(Geometry linear)
Ensures the indexes are valid for a given linear Geometry.
Parameters:
linear - a linear geometry

clone

public Object clone()
Copies this location
Returns:
a copy of this location

compareLocationValues

public int compareLocationValues(int componentIndex1,
                                 int segmentIndex1,
                                 double segmentFraction1)
Compares this object with the specified index values for order.
Parameters:
componentIndex1 - a component index
segmentIndex1 - a segment index
segmentFraction1 - a segment fraction
Returns:
a negative integer, zero, or a positive integer as this LineStringLocation is less than, equal to, or greater than the specified locationValues

compareLocationValues

public static int compareLocationValues(int componentIndex0,
                                        int segmentIndex0,
                                        double segmentFraction0,
                                        int componentIndex1,
                                        int segmentIndex1,
                                        double segmentFraction1)
Compares two sets of location values for order.
Parameters:
componentIndex0 - a component index
segmentIndex0 - a segment index
segmentFraction0 - a segment fraction
componentIndex1 - another component index
segmentIndex1 - another segment index
segmentFraction1 - another segment fraction
Returns:
a negative integer, zero, or a positive integer as the first set of location values is less than, equal to, or greater than the second set of locationValues

compareTo

public int compareTo(Object o)
Compares this object with the specified object for order.
Parameters:
o - the LineStringLocation with which this Coordinate is being compared
Returns:
a negative integer, zero, or a positive integer as this LineStringLocation is less than, equal to, or greater than the specified LineStringLocation

getComponentIndex

public int getComponentIndex()
Gets the component index for this location.
Returns:
the component index

getCoordinate

public Coordinate getCoordinate(Geometry linearGeom)
Gets the Coordinate along the given linear Geometry which is referenced by this location.
Parameters:
linearGeom - a linear geometry
Returns:
the Coordinate at the location

getEndLocation

public static LinearLocation getEndLocation(Geometry linear)
Gets a location which refers to the end of a linear Geometry.
Parameters:
linear - the linear geometry
Returns:
a new LinearLocation

getSegmentFraction

public double getSegmentFraction()
Gets the segment fraction for this location
Returns:
the segment fraction

getSegmentIndex

public int getSegmentIndex()
Gets the segment index for this location
Returns:
the segment index

getSegmentLength

public double getSegmentLength(Geometry linearGeom)
Gets the length of the segment in the given Geometry containing this location.
Parameters:
linearGeom - a linear geometry
Returns:
the length of the segment

isValid

public boolean isValid(Geometry linearGeom)
Tests whether this location refers to a valid location on the given linear Geometry.
Parameters:
linearGeom - a linear geometry
Returns:
true if this location is valid

isVertex

public boolean isVertex()
Tests whether this location refers to a vertex
Returns:
true if the location is a vertex

pointAlongSegmentByFraction

public static Coordinate pointAlongSegmentByFraction(Coordinate p0,
                                                     Coordinate p1,
                                                     double frac)
Computes the Coordinate of a point a given fraction along the line segment (p0, p1). If the fraction is greater than 1.0 the last point of the segment is returned. If the fraction is less than or equal to 0.0 the first point of the segment is returned.
Parameters:
p0 - the first point of the line segment
p1 - the last point of the line segment
frac - the length to the desired point
Returns:
the Coordinate of the desired point

setToEnd

public void setToEnd(Geometry linear)
Sets the value of this location to refer the end of a linear geometry
Parameters:
linear - the linear geometry to set

snapToVertex

public void snapToVertex(Geometry linearGeom,
                         double minDistance)
Snaps the value of this location to the nearest vertex on the given linear Geometry, if the vertex is closer than maxDistance.
Parameters:
linearGeom - a linear geometry
minDistance - the minimum allowable distance to a vertex