22 #ifndef GEOS_NODING_NODEDSEGMENTSTRING_H 23 #define GEOS_NODING_NODEDSEGMENTSTRING_H 25 #include <geos/export.h> 26 #include <geos/noding/NodableSegmentString.h> 27 #include <geos/geom/CoordinateSequence.h> 28 #include <geos/algorithm/LineIntersector.h> 29 #include <geos/noding/SegmentNode.h> 30 #include <geos/noding/SegmentNodeList.h> 31 #include <geos/noding/SegmentString.h> 33 #include <geos/geom/Coordinate.h> 39 #pragma warning(disable: 4251 4355) // warning C4355: 'this' : used in base member initializer list 63 getNodedSubstrings(II from, II too_far,
64 SegmentString::NonConstVect* resultEdgelist)
66 for(II i = from; i != too_far; ++i) {
75 getNodedSubstrings(C* segStrings,
76 SegmentString::NonConstVect* resultEdgelist)
78 getNodedSubstrings(segStrings->begin(), segStrings->end(), resultEdgelist);
81 static void getNodedSubstrings(
const SegmentString::NonConstVect& segStrings,
82 SegmentString::NonConstVect* resultEdgeList);
85 static SegmentString::NonConstVect* getNodedSubstrings(
86 const SegmentString::NonConstVect& segStrings);
119 std::size_t normalizedSegmentIndex = segmentIndex;
122 std::size_t nextSegIndex = normalizedSegmentIndex + 1;
123 if(nextSegIndex < size()) {
125 getCoordinate(nextSegIndex);
129 if(intPt->equals2D(nextPt)) {
130 normalizedSegmentIndex = nextSegIndex;
135 SegmentNode* ei = getNodeList().add(*intPt, normalizedSegmentIndex);
144 size()
const override 153 bool isClosed()
const override;
155 std::ostream& print(std::ostream& os)
const override;
165 int getSegmentOctant(
size_t index)
const;
173 size_t segmentIndex,
size_t geomIndex);
184 size_t geomIndex,
size_t intIndex);
194 size_t segmentIndex);
199 SegmentNodeList nodeList;
201 std::unique_ptr<geom::CoordinateSequence> pts;
214 #endif // GEOS_NODING_NODEDSEGMENTSTRING_H An interface for classes which support adding nodes to a segment string.
Definition: NodableSegmentString.h:37
SegmentNode * addIntersectionNode(geom::Coordinate *intPt, std::size_t segmentIndex)
Adds an intersection node for a given point and segment to this segment string.
Definition: NodedSegmentString.h:117
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
Represents a list of contiguous line segments, and supports noding the segments.
Definition: NodedSegmentString.h:57
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition: LineIntersector.h:49
void addSplitEdges(std::vector< SegmentString * > &edgeList)
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
A list of the SegmentNode present along a NodedSegmentString.
Definition: SegmentNodeList.h:56
NodedSegmentString(geom::CoordinateSequence *newPts, const void *newContext)
Creates a new segment string from a list of vertices.
Definition: NodedSegmentString.h:98
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:58
Represents an intersection point between two NodedSegmentString.
Definition: SegmentNode.h:47