00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GEOS_OP_CONSISTENTAREATESTER_H
00018 #define GEOS_OP_CONSISTENTAREATESTER_H
00019
00020 #include <geos/geom/Coordinate.h>
00021 #include <geos/algorithm/LineIntersector.h>
00022 #include <geos/operation/relate/RelateNodeGraph.h>
00023
00024
00025 namespace geos {
00026 namespace algorithm {
00027 class LineIntersector;
00028 }
00029 namespace geomgraph {
00030 class GeometryGraph;
00031 }
00032 namespace operation {
00033 namespace relate {
00034 class RelateNodeGraph;
00035 }
00036 }
00037 }
00038
00039 namespace geos {
00040 namespace operation {
00041 namespace valid {
00042
00057 class ConsistentAreaTester {
00058 private:
00059
00060 algorithm::LineIntersector li;
00061
00063 geomgraph::GeometryGraph *geomGraph;
00064
00065 relate::RelateNodeGraph nodeGraph;
00066
00068 geom::Coordinate invalidPoint;
00069
00074 bool isNodeEdgeAreaLabelsConsistent();
00075
00076 public:
00077
00079 ConsistentAreaTester(geomgraph::GeometryGraph *newGeomGraph);
00080
00081 ~ConsistentAreaTester();
00082
00086 geom::Coordinate& getInvalidPoint();
00087
00088 bool isNodeConsistentArea();
00089
00105 bool hasDuplicateRings();
00106 };
00107
00108
00109
00110 }
00111 }
00112 }
00113
00114 #endif // GEOS_OP_CONSISTENTAREATESTER_H
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126