00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOS_OP_RELATE_RELATENODEGRAPH_H
00020 #define GEOS_OP_RELATE_RELATENODEGRAPH_H
00021
00022 #include <geos/export.h>
00023
00024 #include <map>
00025 #include <vector>
00026
00027
00028 namespace geos {
00029 namespace geom {
00030 class Coordinate;
00031 struct CoordinateLessThen;
00032 }
00033 namespace geomgraph {
00034
00035 class Node;
00036 class GeometryGraph;
00037 class EdgeEnd;
00038 class NodeMap;
00039 }
00040 }
00041
00042
00043 namespace geos {
00044 namespace operation {
00045 namespace relate {
00046
00068 class GEOS_DLL RelateNodeGraph {
00069
00070 public:
00071
00072 RelateNodeGraph();
00073
00074 virtual ~RelateNodeGraph();
00075
00076 std::map<geom::Coordinate*, geomgraph::Node*,
00077 geom::CoordinateLessThen> &getNodeMap();
00078
00079 void build(geomgraph::GeometryGraph *geomGraph);
00080
00081 void computeIntersectionNodes(geomgraph::GeometryGraph *geomGraph,
00082 int argIndex);
00083
00084 void copyNodesAndLabels(geomgraph::GeometryGraph *geomGraph,int argIndex);
00085
00086 void insertEdgeEnds(std::vector<geomgraph::EdgeEnd*> *ee);
00087
00088 private:
00089
00090 geomgraph::NodeMap *nodes;
00091 };
00092
00093
00094 }
00095 }
00096 }
00097
00098 #endif // GEOS_OP_RELATE_RELATENODEGRAPH_H