GEOS 3.14.0dev
|
Represents a location along a LineString or MultiLineString. More...
#include <LinearLocation.h>
Public Member Functions | |
LinearLocation (std::size_t segmentIndex=0, double segmentFraction=0.0) | |
Creates a location referring to the start of a linear geometry. | |
LinearLocation (std::size_t componentIndex, std::size_t segmentIndex, double segmentFraction) | |
void | clamp (const geom::Geometry *linear) |
Ensures the indexes are valid for a given linear Geometry. | |
void | snapToVertex (const geom::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 minDistance . | |
double | getSegmentLength (const geom::Geometry *linearGeom) const |
Gets the length of the segment in the given Geometry containing this location. | |
void | setToEnd (const geom::Geometry *linear) |
Sets the value of this location to refer the end of a linear geometry. | |
std::size_t | getComponentIndex () const |
Gets the component index for this location. | |
std::size_t | getSegmentIndex () const |
Gets the segment index for this location. | |
double | getSegmentFraction () const |
Gets the segment fraction for this location. | |
bool | isVertex () const |
Tests whether this location refers to a vertex. | |
geom::Coordinate | getCoordinate (const geom::Geometry *linearGeom) const |
Gets the Coordinate along the given linear Geometry which is referenced by this location. | |
std::unique_ptr< geom::LineSegment > | getSegment (const geom::Geometry *linearGeom) const |
Gets a LineSegment representing the segment of the given linear Geometry which contains this location. | |
bool | isValid (const geom::Geometry *linearGeom) const |
Tests whether this location refers to a valid location on the given linear Geometry. | |
int | compareTo (const LinearLocation &other) const |
Compares this object with the specified object for order. | |
int | compareLocationValues (std::size_t componentIndex1, std::size_t segmentIndex1, double segmentFraction1) const |
Compares this object with the specified index values for order. | |
bool | isOnSameSegment (const LinearLocation &loc) const |
Tests whether two locations are on the same segment in the parent Geometry. | |
bool | isEndpoint (const geom::Geometry &linearGeom) const |
Tests whether this location is an endpoint of the linear component it refers to. | |
Static Public Member Functions | |
static LinearLocation | getEndLocation (const geom::Geometry *linear) |
Gets a location which refers to the end of a linear Geometry. | |
static geom::Coordinate | pointAlongSegmentByFraction (const geom::Coordinate &p0, const geom::Coordinate &p1, double frac) |
Computes the Coordinate of a point a given fraction along the line segment (p0, p1) . | |
static int | compareLocationValues (std::size_t componentIndex0, std::size_t segmentIndex0, double segmentFraction0, std::size_t componentIndex1, std::size_t segmentIndex1, double segmentFraction1) |
Compares two sets of location values for order. | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const LinearLocation &obj) |
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.
void geos::linearref::LinearLocation::clamp | ( | const geom::Geometry * | linear | ) |
Ensures the indexes are valid for a given linear Geometry.
linear | a linear geometry |
Referenced by geos::linearref::LocationIndexedLine::clampIndex().
|
static |
Compares two sets of location values for order.
componentIndex0 | a component index |
segmentIndex0 | a segment index |
segmentFraction0 | a segment fraction |
componentIndex1 | another component index |
segmentIndex1 | another segment index |
segmentFraction1 | another segment fraction |
int geos::linearref::LinearLocation::compareLocationValues | ( | std::size_t | componentIndex1, |
std::size_t | segmentIndex1, | ||
double | segmentFraction1 | ||
) | const |
Compares this object with the specified index values for order.
componentIndex1 | a component index |
segmentIndex1 | a segment index |
segmentFraction1 | a segment fraction |
int geos::linearref::LinearLocation::compareTo | ( | const LinearLocation & | other | ) | const |
Compares this object with the specified object for order.
other | the LinearLocation with which this Coordinate is being compared |
std::size_t geos::linearref::LinearLocation::getComponentIndex | ( | ) | const |
Gets the component index for this location.
geom::Coordinate geos::linearref::LinearLocation::getCoordinate | ( | const geom::Geometry * | linearGeom | ) | const |
Gets the Coordinate along the given linear Geometry which is referenced by this location.
linearGeom | the linear geometry referenced by this location |
Referenced by geos::linearref::LocationIndexedLine::extractPoint().
|
static |
Gets a location which refers to the end of a linear Geometry.
linear | the linear geometry |
LinearLocation
std::unique_ptr< geom::LineSegment > geos::linearref::LinearLocation::getSegment | ( | const geom::Geometry * | linearGeom | ) | const |
Gets a LineSegment representing the segment of the given linear Geometry which contains this location.
linearGeom | a linear geometry |
Referenced by geos::linearref::LocationIndexedLine::extractPoint().
double geos::linearref::LinearLocation::getSegmentFraction | ( | ) | const |
Gets the segment fraction for this location.
Referenced by geos::linearref::LocationIndexedLine::extractPoint().
std::size_t geos::linearref::LinearLocation::getSegmentIndex | ( | ) | const |
Gets the segment index for this location.
double geos::linearref::LinearLocation::getSegmentLength | ( | const geom::Geometry * | linearGeom | ) | const |
Gets the length of the segment in the given Geometry containing this location.
linearGeom | a linear geometry |
bool geos::linearref::LinearLocation::isEndpoint | ( | const geom::Geometry & | linearGeom | ) | const |
Tests whether this location is an endpoint of the linear component it refers to.
linearGeom | the linear geometry referenced by this location |
bool geos::linearref::LinearLocation::isOnSameSegment | ( | const LinearLocation & | loc | ) | const |
Tests whether two locations are on the same segment in the parent Geometry.
loc | a location on the same geometry |
bool geos::linearref::LinearLocation::isValid | ( | const geom::Geometry * | linearGeom | ) | const |
Tests whether this location refers to a valid location on the given linear Geometry.
linearGeom | a linear geometry |
Referenced by geos::linearref::LocationIndexedLine::isValidIndex().
bool geos::linearref::LinearLocation::isVertex | ( | ) | const |
Tests whether this location refers to a vertex.
|
static |
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. The Z ordinate is interpolated from the Z-ordinates of the given points, if they are specified.
p0 | the first point of the line segment |
p1 | the last point of the line segment |
frac | the length to the desired point |
void geos::linearref::LinearLocation::setToEnd | ( | const geom::Geometry * | linear | ) |
Sets the value of this location to refer the end of a linear geometry.
linear | the linear geometry to set |
void geos::linearref::LinearLocation::snapToVertex | ( | const geom::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 minDistance
.
linearGeom | a linear geometry |
minDistance | the minimum allowable distance to a vertex |