00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GEOS_OP_CONSISTENTAREATESTER_H
00021 #define GEOS_OP_CONSISTENTAREATESTER_H
00022
00023 #include <geos/export.h>
00024
00025 #include <geos/geom/Coordinate.h>
00026 #include <geos/algorithm/LineIntersector.h>
00027 #include <geos/operation/relate/RelateNodeGraph.h>
00028
00029
00030 namespace geos {
00031 namespace algorithm {
00032 class LineIntersector;
00033 }
00034 namespace geomgraph {
00035 class GeometryGraph;
00036 }
00037 namespace operation {
00038 namespace relate {
00039 class RelateNodeGraph;
00040 }
00041 }
00042 }
00043
00044 namespace geos {
00045 namespace operation {
00046 namespace valid {
00047
00083 class GEOS_DLL ConsistentAreaTester {
00084 private:
00085
00086 algorithm::LineIntersector li;
00087
00089 geomgraph::GeometryGraph *geomGraph;
00090
00091 relate::RelateNodeGraph nodeGraph;
00092
00094 geom::Coordinate invalidPoint;
00095
00100 bool isNodeEdgeAreaLabelsConsistent();
00101
00102 public:
00103
00110 ConsistentAreaTester(geomgraph::GeometryGraph *newGeomGraph);
00111
00112 ~ConsistentAreaTester();
00113
00118 geom::Coordinate& getInvalidPoint();
00119
00127 bool isNodeConsistentArea();
00128
00144 bool hasDuplicateRings();
00145 };
00146
00147
00148
00149 }
00150 }
00151 }
00152
00153 #endif // GEOS_OP_CONSISTENTAREATESTER_H