00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOS_OP_RELATE_RELATEOP_H
00020 #define GEOS_OP_RELATE_RELATEOP_H
00021
00022 #include <geos/export.h>
00023
00024 #include <geos/operation/GeometryGraphOperation.h>
00025 #include <geos/operation/relate/RelateComputer.h>
00026
00027
00028 namespace geos {
00029 namespace algorithm {
00030 class BoundaryNodeRule;
00031 }
00032 namespace geom {
00033 class IntersectionMatrix;
00034 class Geometry;
00035 }
00036 }
00037
00038
00039 namespace geos {
00040 namespace operation {
00041 namespace relate {
00042
00057 class GEOS_DLL RelateOp: public GeometryGraphOperation {
00058
00059 public:
00060
00072 static geom::IntersectionMatrix* relate(
00073 const geom::Geometry *a,
00074 const geom::Geometry *b);
00075
00088 static geom::IntersectionMatrix* relate(
00089 const geom::Geometry *a,
00090 const geom::Geometry *b,
00091 const algorithm::BoundaryNodeRule& boundaryNodeRule);
00092
00100 RelateOp(const geom::Geometry *g0,
00101 const geom::Geometry *g1);
00102
00111 RelateOp(const geom::Geometry *g0,
00112 const geom::Geometry *g1,
00113 const algorithm::BoundaryNodeRule& boundaryNodeRule);
00114
00115 virtual ~RelateOp();
00116
00125 geom::IntersectionMatrix* getIntersectionMatrix();
00126
00127 private:
00128
00129 RelateComputer relateComp;
00130 };
00131
00132
00133 }
00134 }
00135 }
00136
00137 #endif // GEOS_OP_RELATE_RELATEOP_H