GEOS  3.9.1dev
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
geos::operation::overlayng::OverlayGraph Class Reference

#include <OverlayGraph.h>

Public Member Functions

 OverlayGraph ()
 
 OverlayGraph (const OverlayGraph &g)=delete
 
OverlayGraphoperator= (const OverlayGraph &g)=delete
 
OverlayEdgeaddEdge (Edge *edge)
 
std::vector< OverlayEdge * > & getEdges ()
 
std::vector< OverlayEdge * > getNodeEdges ()
 
OverlayEdgegetNodeEdge (const Coordinate &nodePt) const
 
std::vector< OverlayEdge * > getResultAreaEdges ()
 
OverlayLabelcreateOverlayLabel (const Edge *edge)
 

Private Member Functions

OverlayEdgecreateEdgePair (const CoordinateSequence *pts, OverlayLabel *lbl)
 
OverlayEdgecreateOverlayEdge (const CoordinateSequence *pts, OverlayLabel *lbl, bool direction)
 
void insert (OverlayEdge *e)
 

Private Attributes

std::map< Coordinate, OverlayEdge * > nodeMap
 
std::vector< OverlayEdge * > edges
 
std::deque< OverlayEdgeovEdgeQue
 
std::deque< OverlayLabelovLabelQue
 
std::vector< std::unique_ptr< const geom::CoordinateSequence > > csQue
 

Friends

std::ostream & operator<< (std::ostream &os, const OverlayGraph &og)
 

Detailed Description

A planar graph of OverlayEdge, representing the topology resulting from an overlay operation. Each source Edge is represented by two OverlayEdges, with opposite orientation. A single OverlayLabel is created for each symmetric pair of OverlayEdges.

Author
mdavis

Definition at line 54 of file OverlayGraph.h.

Constructor & Destructor Documentation

geos::operation::overlayng::OverlayGraph::OverlayGraph ( )

Creates a new graph for a set of noded, labelled Edges.

geos::operation::overlayng::OverlayGraph::OverlayGraph ( const OverlayGraph g)
delete

Member Function Documentation

OverlayEdge* geos::operation::overlayng::OverlayGraph::addEdge ( Edge edge)

Adds an edge between the coordinates orig and dest to this graph. Only valid edges can be added (in particular, zero-length segments cannot be added)

OverlayEdge* geos::operation::overlayng::OverlayGraph::createEdgePair ( const CoordinateSequence pts,
OverlayLabel lbl 
)
private

Create and add HalfEdge pairs to map and vector containers, using local std::deque storage for objects.

OverlayEdge* geos::operation::overlayng::OverlayGraph::createOverlayEdge ( const CoordinateSequence pts,
OverlayLabel lbl,
bool  direction 
)
private

Create a single OverlayEdge in local std::deque storage, and return the pointer.

OverlayLabel* geos::operation::overlayng::OverlayGraph::createOverlayLabel ( const Edge edge)

Create a single OverlayLabel in local std::deque storage and return a pointer to the stored object.

std::vector<OverlayEdge*>& geos::operation::overlayng::OverlayGraph::getEdges ( )

Gets the set of edges in this graph. Only one of each symmetric pair of OverlayEdges is included. The opposing edge can be found by using OverlayEdge#sym().

OverlayEdge* geos::operation::overlayng::OverlayGraph::getNodeEdge ( const Coordinate nodePt) const

Gets an edge originating at the given node point.

std::vector<OverlayEdge*> geos::operation::overlayng::OverlayGraph::getNodeEdges ( )

Gets the collection of edges representing the nodes in this graph. For each star of edges originating at a node a single representative edge is included. The other edges around the node can be found by following the next and prev links.

std::vector<OverlayEdge*> geos::operation::overlayng::OverlayGraph::getResultAreaEdges ( )

Gets the representative edges marked as being in the result area.

void geos::operation::overlayng::OverlayGraph::insert ( OverlayEdge e)
private
OverlayGraph& geos::operation::overlayng::OverlayGraph::operator= ( const OverlayGraph g)
delete

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const OverlayGraph og 
)
friend

Member Data Documentation

std::vector<std::unique_ptr<const geom::CoordinateSequence> > geos::operation::overlayng::OverlayGraph::csQue
private

Definition at line 66 of file OverlayGraph.h.

std::vector<OverlayEdge*> geos::operation::overlayng::OverlayGraph::edges
private

Definition at line 60 of file OverlayGraph.h.

std::map<Coordinate, OverlayEdge*> geos::operation::overlayng::OverlayGraph::nodeMap
private

Definition at line 59 of file OverlayGraph.h.

std::deque<OverlayEdge> geos::operation::overlayng::OverlayGraph::ovEdgeQue
private

Definition at line 63 of file OverlayGraph.h.

std::deque<OverlayLabel> geos::operation::overlayng::OverlayGraph::ovLabelQue
private

Definition at line 64 of file OverlayGraph.h.


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