GEOS 3.13.1
geos::geomgraph::GeometryGraph Class Referencefinal

A GeometryGraph is a graph that models a given Geometry. More...

#include <GeometryGraph.h>

Inheritance diagram for geos::geomgraph::GeometryGraph:
geos::geomgraph::PlanarGraph

Public Member Functions

 GeometryGraph (uint8_t newArgIndex, const geom::Geometry *newParentGeom)
 GeometryGraph (uint8_t newArgIndex, const geom::Geometry *newParentGeom, const algorithm::BoundaryNodeRule &boundaryNodeRule)
const geom::GeometrygetGeometry ()
void getBoundaryNodes (std::vector< Node * > &bdyNodes)
 Returned object is owned by this GeometryGraph.
std::vector< Node * > * getBoundaryNodes ()
geom::CoordinateSequencegetBoundaryPoints ()
 Returned object is owned by this GeometryGraph.
EdgefindEdge (const geom::LineString *line) const
void computeSplitEdges (std::vector< Edge * > *edgelist)
void addEdge (Edge *e)
void addPoint (geom::Coordinate &pt)
std::unique_ptr< index::SegmentIntersectorcomputeSelfNodes (algorithm::LineIntersector *li, bool computeRingSelfNodes, const geom::Envelope *env=nullptr)
 Compute self-nodes, taking advantage of the Geometry type to minimize the number of intersection tests. (E.g. rings are not tested for self-intersection, since they are assumed to be valid).
std::unique_ptr< index::SegmentIntersectorcomputeSelfNodes (algorithm::LineIntersector &li, bool computeRingSelfNodes, const geom::Envelope *env=nullptr)
std::unique_ptr< index::SegmentIntersectorcomputeEdgeIntersections (GeometryGraph *g, algorithm::LineIntersector *li, bool includeProper, const geom::Envelope *env=nullptr)
std::vector< Edge * > * getEdges ()
bool hasTooFewPoints ()
const geom::CoordinategetInvalidPoint ()
const algorithm::BoundaryNodeRulegetBoundaryNodeRule () const
Public Member Functions inherited from geos::geomgraph::PlanarGraph
 PlanarGraph (const NodeFactory &nodeFact)
std::vector< Edge * >::iterator getEdgeIterator ()
std::vector< EdgeEnd * > * getEdgeEnds ()
bool isBoundaryNode (uint8_t geomIndex, const geom::Coordinate &coord)
void add (EdgeEnd *e)
NodeMap::iterator getNodeIterator ()
void getNodes (std::vector< Node * > &)
NodeaddNode (Node *node)
NodeaddNode (const geom::Coordinate &coord)
Nodefind (geom::Coordinate &coord)
void addEdges (const std::vector< Edge * > &edgesToAdd)
 Add a set of edges to the graph. For each edge two DirectedEdges will be created. DirectedEdges are NOT linked by this method.
void linkResultDirectedEdges ()
void linkAllDirectedEdges ()
EdgeEndfindEdgeEnd (Edge *e)
 Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges)
EdgefindEdge (const geom::Coordinate &p0, const geom::Coordinate &p1)
 Returns the edge whose first two coordinates are p0 and p1.
EdgefindEdgeInSameDirection (const geom::Coordinate &p0, const geom::Coordinate &p1)
 Returns the edge which starts at p0 and whose first segment is parallel to p1.
std::string printEdges ()
NodeMap * getNodeMap ()

Static Public Member Functions

static bool isInBoundary (int boundaryCount)
static geom::Location determineBoundary (int boundaryCount)
static geom::Location determineBoundary (const algorithm::BoundaryNodeRule &boundaryNodeRule, int boundaryCount)
Static Public Member Functions inherited from geos::geomgraph::PlanarGraph
template<typename It>
static void linkResultDirectedEdges (It first, It last)
 For nodes in the collection (first..last), link the DirectedEdges at the node that are in the result.

Additional Inherited Members

Protected Member Functions inherited from geos::geomgraph::PlanarGraph
void insertEdge (Edge *e)
Protected Attributes inherited from geos::geomgraph::PlanarGraph
std::vector< Edge * > * edges
NodeMap * nodes
std::vector< EdgeEnd * > * edgeEndList

Detailed Description

A GeometryGraph is a graph that models a given Geometry.

Member Function Documentation

◆ computeSelfNodes()

std::unique_ptr< index::SegmentIntersector > geos::geomgraph::GeometryGraph::computeSelfNodes ( algorithm::LineIntersector * li,
bool computeRingSelfNodes,
const geom::Envelope * env = nullptr )
inline

Compute self-nodes, taking advantage of the Geometry type to minimize the number of intersection tests. (E.g. rings are not tested for self-intersection, since they are assumed to be valid).

Parameters
lithe LineIntersector to use
computeRingSelfNodesif false, intersection checks are optimized to not test rings for self-intersection
envan Envelope
Returns
the SegmentIntersector used, containing information about the intersections found

References computeSelfNodes().

Referenced by computeSelfNodes().


The documentation for this class was generated from the following file: