GEOS  3.6.2
RelateOp.h
00001 /**********************************************************************
00002  *
00003  * GEOS - Geometry Engine Open Source
00004  * http://geos.osgeo.org
00005  *
00006  * Copyright (C) 2006 Refractions Research Inc.
00007  *
00008  * This is free software; you can redistribute and/or modify it under
00009  * the terms of the GNU Lesser General Public Licence as published
00010  * by the Free Software Foundation. 
00011  * See the COPYING file for more information.
00012  *
00013  **********************************************************************
00014  *
00015  * Last port: operation/relate/RelateOp.java rev. 1.19 (JTS-1.10)
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> // for inheritance
00025 #include <geos/operation/relate/RelateComputer.h> // for composition
00026 
00027 // Forward declarations
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 { // geos::operation
00041 namespace relate { // geos::operation::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 } // namespace geos:operation:relate
00134 } // namespace geos:operation
00135 } // namespace geos
00136 
00137 #endif // GEOS_OP_RELATE_RELATEOP_H