17#include <unordered_set>
19#include <geos/geom/CoordinateSequenceFilter.h>
20#include <geos/geom/Coordinate.h>
21#include <geos/geom/LineSegment.h>
22#include <geos/export.h>
34class CoverageBoundarySegmentFinder :
public geos::geom::CoordinateSequenceFilter
36 using Coordinate = geos::geom::Coordinate;
37 using CoordinateSequence = geos::geom::CoordinateSequence;
38 using CoordinateSequenceFilter = geos::geom::CoordinateSequenceFilter;
39 using Geometry = geos::geom::Geometry;
40 using LineSegment = geos::geom::LineSegment;
44 CoverageBoundarySegmentFinder(LineSegment::UnorderedSet& segs)
45 : m_boundarySegs(segs)
52 bool isDone()
const override {
56 void filter_ro(
const CoordinateSequence& seq, std::size_t i)
override;
59 static LineSegment::UnorderedSet
60 findBoundarySegments(
const std::vector<const Geometry*>& geoms);
62 static bool isBoundarySegment(
63 const LineSegment::UnorderedSet& boundarySegs,
64 const CoordinateSequence* seq,
70 createSegment(
const CoordinateSequence& seq, std::size_t i);
73 LineSegment::UnorderedSet& m_boundarySegs;
virtual bool isDone() const =0
Reports whether the application of this filter can be terminated.
virtual bool isGeometryChanged() const =0
Reports whether the execution of this filter has modified the coordinates of the geometry.
The internal representation of a list of coordinates inside a Geometry.
Definition CoordinateSequence.h:56
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition Geometry.h:196
Basic namespace for all GEOS functionalities.
Definition geos.h:38