61class GEOS_DLL TPVWSimplifier
63 using Corner = geos::coverage::Corner;
72 template<
typename ItemType>
73 using TemplateSTRtree = geos::index::strtree::TemplateSTRtree<ItemType>;
74 using LinkedLine = geos::simplify::LinkedLine;
89 const Envelope* envelope;
91 LinkedLine linkedLine;
92 VertexSequencePackedRtree vertexIndex;
93 std::size_t minEdgeSize;
104 Edge(
const LineString* p_inputLine,
bool p_isFreeRing,
double p_areaTolerance);
106 const Coordinate& getCoordinate(std::size_t
index)
const;
108 const Envelope* getEnvelopeInternal()
const;
110 std::size_t size()
const;
112 std::unique_ptr<CoordinateSequence>
simplify(EdgeIndex& edgeIndex);
114 void createQueue(Corner::PriorityQueue& pq);
116 void addCorner(std::size_t i, Corner::PriorityQueue& cornerQueue);
118 bool isRemovable(Corner& corner, EdgeIndex& edgeIndex)
const;
129 bool hasIntersectingVertex(
const Corner& corner,
130 const Envelope& cornerEnv,
131 const Edge& edge)
const;
133 std::vector<std::size_t> query(
const Envelope& cornerEnv)
const;
146 Corner::PriorityQueue& cornerQueue);
154 TemplateSTRtree<const Edge*>
index;
156 void add(std::vector<Edge>& edges);
158 std::vector<const Edge*> query(
const Envelope& queryEnv);
172 const MultiLineString* lines,
173 double distanceTolerance,
191 const MultiLineString* lines,
192 std::vector<bool>& freeRings,
193 const MultiLineString* constraintLines,
194 double distanceTolerance,
198 TPVWSimplifier(
const MultiLineString* lines,
199 double distanceTolerance);
205 const MultiLineString* inputLines;
206 std::vector<bool> isFreeRing;
207 double areaTolerance;
208 const GeometryFactory* geomFactory;
209 const MultiLineString* constraintLines;
213 void setFreeRingIndices(std::vector<bool>& freeRing);
215 void setConstraints(
const MultiLineString* constraints);
219 std::vector<Edge> createEdges(
220 const MultiLineString* lines,
221 std::vector<bool>& freeRing,
static std::unique_ptr< MultiLineString > simplify(const MultiLineString *lines, std::vector< bool > &freeRings, const MultiLineString *constraintLines, double distanceTolerance, geos::util::ProgressFunction *progressFunction)