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