20 #ifndef GEOS_OP_LINEMERGE_LINESEQUENCER_H 21 #define GEOS_OP_LINEMERGE_LINESEQUENCER_H 35 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class 41 class GeometryFactory;
45 namespace planargraph {
107 void computeSequence();
108 Sequences* findSequences();
111 void delAll(Sequences&);
128 geom::Geometry* buildSequencedGeometry(
const Sequences& sequences);
135 DirEdgeList::iterator lit,
136 bool expectedClosed);
167 DirEdgeList* orient(DirEdgeList* seq);
177 DirEdgeList* reverse(DirEdgeList& seq);
203 sequencedGeometry(nullptr),
204 isSequenceableVar(false)
230 return isSequenceableVar;
248 template <
class TargetContainer>
250 add(TargetContainer& geoms)
252 for(
typename TargetContainer::const_iterator i = geoms.begin(),
253 e = geoms.end(); i != e; ++i) {
285 return sequencedGeometry.release();
288 return sequencedGeometry.get();
301 #endif // GEOS_OP_LINEMERGE_LINESEQUENCER_H Builds a sequence from a set of LineStrings so that they are ordered end to end.
static geom::Geometry * sequence(const geom::Geometry &geom)
void filter(const geom::Geometry *g)
Act as a GeometryComponentFilter so to extract the linearworks.
const geom::GeometryFactory * factory
geom::Geometry * getSequencedLineStrings(bool release=1)
Returns the LineString or MultiLineString built by the sequencing process, if one exists...
bool isSequenceable()
Tests whether the arrangement of linestrings has a valid sequence.
Represents a directed edge in a PlanarGraph.
std::list< planargraph::DirectedEdge * > DirEdgeList
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
std::vector< DirEdgeList * > Sequences
A planar graph of edges that is analyzed to sew the edges together.
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
void add(const geom::Geometry &geometry)
Adds a Geometry to be sequenced.
Basic namespace for all GEOS functionalities.
std::unique_ptr< geom::Geometry > sequencedGeometry
A node in a PlanarGraph is a location where 0 or more Edge meet.
A subgraph of a PlanarGraph.
void applyComponentFilter(T &f) const
Apply a filter to each component of this geometry. The filter is expected to provide a ...
void add(TargetContainer &geoms)