19 #include <geos/index/strtree/TemplateSTRtree.h>
20 #include <geos/index/VertexSequencePackedRtree.h>
21 #include <geos/simplify/LinkedLine.h>
22 #include <geos/coverage/Corner.h>
23 #include <geos/export.h>
39 using geos::coverage::Corner;
48 using geos::index::strtree::TemplateSTRtree;
49 using geos::simplify::LinkedLine;
92 LinkedLine linkedLine;
94 std::size_t minEdgeSize;
105 Edge(
const LineString* p_inputLine,
bool p_isFreeRing,
double p_areaTolerance);
107 const Coordinate& getCoordinate(std::size_t index)
const;
109 const Envelope* getEnvelopeInternal()
const;
111 std::size_t size()
const;
113 std::unique_ptr<CoordinateSequence> simplify(EdgeIndex& edgeIndex);
115 void createQueue(Corner::PriorityQueue& pq);
117 void addCorner(std::size_t i, Corner::PriorityQueue& cornerQueue);
119 bool isRemovable(Corner& corner, EdgeIndex& edgeIndex)
const;
130 bool hasIntersectingVertex(
const Corner& corner,
132 const Edge& edge)
const;
134 std::vector<std::size_t> query(
const Envelope& cornerEnv)
const;
147 Corner::PriorityQueue& cornerQueue);
155 TemplateSTRtree<const Edge*> index;
157 void add(std::vector<Edge>& edges);
159 std::vector<const Edge*> query(
const Envelope& queryEnv);
173 double distanceTolerance);
190 std::vector<bool>& freeRings,
192 double distanceTolerance);
196 double distanceTolerance);
203 std::vector<bool> isFreeRing;
204 double areaTolerance;
210 void setFreeRingIndices(std::vector<bool>& freeRing);
214 std::unique_ptr<MultiLineString> simplify();
216 std::vector<Edge> createEdges(
218 std::vector<bool>& freeRing);