GEOS
3.9.0
|
A GeometryGraph is a graph that models a given Geometry. More...
#include <GeometryGraph.h>
Public Member Functions | |
GeometryGraph (int newArgIndex, const geom::Geometry *newParentGeom) | |
GeometryGraph (int newArgIndex, const geom::Geometry *newParentGeom, const algorithm::BoundaryNodeRule &boundaryNodeRule) | |
const geom::Geometry * | getGeometry () |
std::vector< Node * > * | getBoundaryNodes () |
Returned object is owned by this GeometryGraph. | |
void | getBoundaryNodes (std::vector< Node * > &bdyNodes) |
geom::CoordinateSequence * | getBoundaryPoints () |
Returned object is owned by this GeometryGraph. | |
Edge * | findEdge (const geom::LineString *line) const |
void | computeSplitEdges (std::vector< Edge * > *edgelist) |
void | addEdge (Edge *e) |
void | addPoint (geom::Coordinate &pt) |
std::unique_ptr < index::SegmentIntersector > | computeSelfNodes (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). More... | |
std::unique_ptr < index::SegmentIntersector > | computeSelfNodes (algorithm::LineIntersector *li, bool computeRingSelfNodes, bool isDoneIfProperInt, const geom::Envelope *env=nullptr) |
std::unique_ptr < index::SegmentIntersector > | computeSelfNodes (algorithm::LineIntersector &li, bool computeRingSelfNodes, const geom::Envelope *env=nullptr) |
std::unique_ptr < index::SegmentIntersector > | computeSelfNodes (algorithm::LineIntersector &li, bool computeRingSelfNodes, bool isDoneIfProperInt, const geom::Envelope *env=nullptr) |
std::unique_ptr < index::SegmentIntersector > | computeEdgeIntersections (GeometryGraph *g, algorithm::LineIntersector *li, bool includeProper, const geom::Envelope *env=nullptr) |
std::vector< Edge * > * | getEdges () |
bool | hasTooFewPoints () |
const geom::Coordinate & | getInvalidPoint () |
const algorithm::BoundaryNodeRule & | getBoundaryNodeRule () const |
![]() | |
PlanarGraph (const NodeFactory &nodeFact) | |
virtual std::vector< Edge * > ::iterator | getEdgeIterator () |
virtual std::vector< EdgeEnd * > * | getEdgeEnds () |
virtual bool | isBoundaryNode (int geomIndex, const geom::Coordinate &coord) |
virtual void | add (EdgeEnd *e) |
virtual NodeMap::iterator | getNodeIterator () |
virtual void | getNodes (std::vector< Node * > &) |
virtual Node * | addNode (Node *node) |
virtual Node * | addNode (const geom::Coordinate &coord) |
virtual Node * | find (geom::Coordinate &coord) |
virtual 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. | |
virtual void | linkResultDirectedEdges () |
virtual void | linkAllDirectedEdges () |
virtual EdgeEnd * | findEdgeEnd (Edge *e) |
Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges) More... | |
virtual Edge * | findEdge (const geom::Coordinate &p0, const geom::Coordinate &p1) |
Returns the edge whose first two coordinates are p0 and p1. More... | |
virtual Edge * | findEdgeInSameDirection (const geom::Coordinate &p0, const geom::Coordinate &p1) |
Returns the edge which starts at p0 and whose first segment is parallel to p1. More... | |
virtual std::string | printEdges () |
virtual 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) |
![]() | |
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. More... | |
Additional Inherited Members | |
![]() | |
virtual void | insertEdge (Edge *e) |
![]() | |
std::vector< Edge * > * | edges |
NodeMap * | nodes |
std::vector< EdgeEnd * > * | edgeEndList |
A GeometryGraph is a graph that models a given Geometry.
|
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).
li | the LineIntersector to use |
computeRingSelfNodes | if false , intersection checks are optimized to not test rings for self-intersection |
env | an Envelope |