GEOS
3.9.1dev
|
Represents a list of contiguous line segments, and supports noding the segments. More...
#include <NodedSegmentString.h>
Public Member Functions | |
std::unique_ptr< std::vector< geom::Coordinate > > | getNodedCoordinates () |
NodedSegmentString (geom::CoordinateSequence *newPts, const void *newContext) | |
Creates a new segment string from a list of vertices. More... | |
NodedSegmentString (SegmentString *ss) | |
~NodedSegmentString () override=default | |
SegmentNode * | addIntersectionNode (geom::Coordinate *intPt, std::size_t segmentIndex) |
Adds an intersection node for a given point and segment to this segment string. More... | |
SegmentNodeList & | getNodeList () |
const SegmentNodeList & | getNodeList () const |
size_t | size () const override |
const geom::Coordinate & | getCoordinate (size_t i) const override |
geom::CoordinateSequence * | getCoordinates () const override |
Return a pointer to the CoordinateSequence associated with this SegmentString. More... | |
geom::CoordinateSequence * | releaseCoordinates () |
bool | isClosed () const override |
std::ostream & | print (std::ostream &os) const override |
int | getSegmentOctant (size_t index) const |
Gets the octant of the segment starting at vertex index. More... | |
void | addIntersections (algorithm::LineIntersector *li, size_t segmentIndex, size_t geomIndex) |
Add SegmentNodes for one or both intersections found for a segment of an edge to the edge intersection list. More... | |
void | addIntersection (algorithm::LineIntersector *li, size_t segmentIndex, size_t geomIndex, size_t intIndex) |
Add an SegmentNode for intersection intIndex. More... | |
void | addIntersection (const geom::Coordinate &intPt, size_t segmentIndex) |
Add an SegmentNode for intersection intIndex. More... | |
Public Member Functions inherited from geos::noding::NodableSegmentString | |
NodableSegmentString (const void *newContext) | |
Public Member Functions inherited from geos::noding::SegmentString | |
SegmentString (const void *newContext) | |
Construct a SegmentString. More... | |
virtual | ~SegmentString () |
const void * | getData () const |
Gets the user-defined data for this segment string. More... | |
void | setData (const void *data) |
Sets the user-defined data for this segment string. More... | |
Static Public Member Functions | |
template<class II > | |
static void | getNodedSubstrings (II from, II too_far, SegmentString::NonConstVect *resultEdgelist) |
template<class C > | |
static void | getNodedSubstrings (C *segStrings, SegmentString::NonConstVect *resultEdgelist) |
static void | getNodedSubstrings (const SegmentString::NonConstVect &segStrings, SegmentString::NonConstVect *resultEdgeList) |
static SegmentString::NonConstVect * | getNodedSubstrings (const SegmentString::NonConstVect &segStrings) |
Returns allocated object. More... | |
Static Private Member Functions | |
static int | safeOctant (const geom::Coordinate &p0, const geom::Coordinate &p1) |
Private Attributes | |
SegmentNodeList | nodeList |
std::unique_ptr< geom::CoordinateSequence > | pts |
Additional Inherited Members | |
Public Types inherited from geos::noding::SegmentString | |
typedef std::vector< const SegmentString * > | ConstVect |
typedef std::vector< SegmentString * > | NonConstVect |
Represents a list of contiguous line segments, and supports noding the segments.
The line segments are represented by an array of Coordinates. Intended to optimize the noding of contiguous segments by reducing the number of allocated objects. SegmentStrings can carry a context object, which is useful for preserving topological or parentage information. All noded substrings are initialized with the same context object.
Definition at line 57 of file NodedSegmentString.h.
|
inline |
Creates a new segment string from a list of vertices.
newPts | CoordinateSequence representing the string, ownership transferred. |
newContext | the user-defined data of this segment string (may be null) |
Definition at line 100 of file NodedSegmentString.h.
|
inline |
Definition at line 106 of file NodedSegmentString.h.
|
overridedefault |
void geos::noding::NodedSegmentString::addIntersection | ( | algorithm::LineIntersector * | li, |
size_t | segmentIndex, | ||
size_t | geomIndex, | ||
size_t | intIndex | ||
) |
Add an SegmentNode for intersection intIndex.
An intersection that falls exactly on a vertex of the SegmentString is normalized to use the higher of the two possible segmentIndexes
void geos::noding::NodedSegmentString::addIntersection | ( | const geom::Coordinate & | intPt, |
size_t | segmentIndex | ||
) |
Add an SegmentNode for intersection intIndex.
An intersection that falls exactly on a vertex of the edge is normalized to use the higher of the two possible segmentIndexes
|
inline |
Adds an intersection node for a given point and segment to this segment string.
If an intersection already exists for this exact location, the existing node will be returned.
intPt | the location of the intersection |
segmentIndex | the index of the segment containing the intersection |
Definition at line 125 of file NodedSegmentString.h.
References geos::geom::Coordinate::equals2D().
void geos::noding::NodedSegmentString::addIntersections | ( | algorithm::LineIntersector * | li, |
size_t | segmentIndex, | ||
size_t | geomIndex | ||
) |
Add SegmentNodes for one or both intersections found for a segment of an edge to the edge intersection list.
|
overridevirtual |
Implements geos::noding::SegmentString.
|
overridevirtual |
Return a pointer to the CoordinateSequence associated with this SegmentString.
Implements geos::noding::SegmentString.
std::unique_ptr<std::vector<geom::Coordinate> > geos::noding::NodedSegmentString::getNodedCoordinates | ( | ) |
|
inlinestatic |
Definition at line 63 of file NodedSegmentString.h.
References geos::noding::SegmentNodeList::addSplitEdges(), and getNodeList().
Referenced by geos::noding::SimpleNoder::getNodedSubstrings().
|
inlinestatic |
Definition at line 75 of file NodedSegmentString.h.
|
static |
|
static |
Returns allocated object.
SegmentNodeList& geos::noding::NodedSegmentString::getNodeList | ( | ) |
const SegmentNodeList& geos::noding::NodedSegmentString::getNodeList | ( | ) | const |
int geos::noding::NodedSegmentString::getSegmentOctant | ( | size_t | index | ) | const |
Gets the octant of the segment starting at vertex index.
index | the index of the vertex starting the segment. Must not be the last index in the vertex list |
|
overridevirtual |
Implements geos::noding::SegmentString.
|
overridevirtual |
Reimplemented from geos::noding::SegmentString.
geom::CoordinateSequence* geos::noding::NodedSegmentString::releaseCoordinates | ( | ) |
|
staticprivate |
|
inlineoverridevirtual |
Implements geos::noding::SegmentString.
Definition at line 152 of file NodedSegmentString.h.
|
private |
Definition at line 208 of file NodedSegmentString.h.
|
private |
Definition at line 210 of file NodedSegmentString.h.