GEOS
3.9.0dev

Builds a sequence from a set of LineStrings so that they are ordered end to end. More...
#include <LineSequencer.h>
Public Member Functions  
bool  isSequenceable () 
Tests whether the arrangement of linestrings has a valid sequence. More...  
void  add (const geom::Geometry &geometry) 
Adds a Geometry to be sequenced. More...  
template<class TargetContainer >  
void  add (TargetContainer &geoms) 
void  filter (const geom::Geometry *g) 
Act as a GeometryComponentFilter so to extract the linearworks.  
geom::Geometry *  getSequencedLineStrings (bool release=1) 
Returns the LineString or MultiLineString built by the sequencing process, if one exists. More...  
Static Public Member Functions  
static geom::Geometry *  sequence (const geom::Geometry &geom) 
static bool  isSequenced (const geom::Geometry *geom) 
Tests whether a Geometry is sequenced correctly. More...  
Builds a sequence from a set of LineStrings so that they are ordered end to end.
A sequence is a complete nonrepeating list of the linear components of the input. Each linestring is oriented so that identical endpoints are adjacent in the list.
A typical use case is to convert a set of unoriented geometric links from a linear network (e.g. such as block faces on a bus route) into a continuous oriented path through the network.
The input linestrings may form one or more connected sets. The input linestrings should be correctly noded, or the results may not be what is expected. The computed output is a single MultiLineString containing the ordered linestrings in the sequence.
The sequencing employs the classic Eulerian path graph algorithm. Since Eulerian paths are not uniquely determined, further rules are used to make the computed sequence preserve as much as possible of the input ordering. Within a connected subset of lines, the ordering rules are:
isSequenceable
method will return false
.

inline 
Adds a Geometry to be sequenced.
May be called multiple times. Any dimension of Geometry may be added; the constituent linework will be extracted.
geometry  the geometry to add 
References geos::geom::Geometry::applyComponentFilter().

inline 
Returns the LineString or MultiLineString built by the sequencing process, if one exists.
release  release ownership of computed Geometry 
null
if a valid sequence does not exist.

inline 
Tests whether the arrangement of linestrings has a valid sequence.
true
if a valid sequence exists.

static 
Tests whether a Geometry is sequenced correctly.
LineStrings are trivially sequenced. MultiLineStrings are checked for correct sequencing. Otherwise, isSequenced
is defined to be true
for geometries that are not lineal.
geom  the geometry to test 
true
if the geometry is sequenced or is not lineal