21#include <geos/export.h>
23#include <geos/noding/Noder.h>
24#include <geos/noding/NodedSegmentString.h>
25#include <geos/noding/snapround/MCIndexPointSnapper.h>
26#include <geos/algorithm/LineIntersector.h>
27#include <geos/geom/Coordinate.h>
28#include <geos/geom/PrecisionModel.h>
34#pragma warning(disable: 4251)
73class GEOS_DLL MCIndexSnapRounder:
public Noder {
83 li.setPrecisionModel(&pm);
86 std::vector<SegmentString*>*
89 return NodedSegmentString::getNodedSubstrings(*nodedSegStrings);
92 void computeNodes(std::vector<SegmentString*>* segStrings)
override;
113 std::vector<SegmentString*>* nodedSegStrings;
115 std::unique_ptr<MCIndexPointSnapper> pointSnapper;
117 void snapRound(
MCIndexNoder& noder, std::vector<SegmentString*>* segStrings);
128 std::vector<SegmentString*>* segStrings,
129 std::vector<geom::Coordinate>& intersections);
135 void computeIntersectionSnaps(std::vector<geom::Coordinate>& snapPts);
143 void checkCorrectness(std::vector<SegmentString*>& inputSegmentStrings);
146 MCIndexSnapRounder(
const MCIndexSnapRounder& other) =
delete;
147 MCIndexSnapRounder& operator=(
const MCIndexSnapRounder& rhs) =
delete;
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition LineIntersector.h:53
Specifies the precision model of the Coordinate in a Geometry.
Definition PrecisionModel.h:88
double getScale() const
Returns the multiplying factor used to obtain a precise coordinate.
Definition PrecisionModel.h:230
Nodes a set of SegmentString using a index based on MonotoneChain and a SpatialIndex.
Definition MCIndexNoder.h:65
Represents a list of contiguous line segments, and supports noding the segments.
Definition NodedSegmentString.h:58
An interface for classes which represent a sequence of contiguous line segments.
Definition SegmentString.h:47
std::vector< SegmentString * > * getNodedSubstrings() const override
Returns a collection of fully noded SegmentStrings. The SegmentStrings have the same context as their...
Definition MCIndexSnapRounder.h:87
void computeVertexSnaps(std::vector< SegmentString * > &edges)
void computeNodes(std::vector< SegmentString * > *segStrings) override
Computes the noding for a collection of SegmentStrings.
Contains classes and interfaces implementing fundamental computational geometry algorithms.
Definition Angle.h:32
Contains classes to implement the Snap Rounding algorithm for noding linestrings.
Definition namespaces.h:175
Classes to compute nodings for arrangements of line segments and line segment sequences.
Definition InvalidSegmentDetector.h:25
Basic namespace for all GEOS functionalities.
Definition geos.h:39