26 #ifndef __TERRALIB_GEOMETRY_INTERNAL_GEOMETRY_H
27 #define __TERRALIB_GEOMETRY_INTERNAL_GEOMETRY_H
30 #include "../common/BaseVisitable.h"
31 #include "../common/Enums.h"
32 #include "../datatype/AbstractData.h"
43 #include <boost/shared_ptr.hpp>
148 int getCoordinateDimension()
const throw();
167 virtual const std::string& getGeometryType()
const throw() = 0;
189 int getSRID()
const throw() {
return m_srid; }
200 virtual void setSRID(
int srid)
throw() = 0;
230 Geometry* getEnvelope()
const throw();
246 const
Envelope* getMBR() const throw();
261 virtual
void computeMBR(
bool cascade) const throw() = 0;
268 std::
string asText() const throw();
284 char* asBinary(std::
size_t& size) const throw(Exception);
297 std::
size_t getWkbSize() const throw();
313 void getWkb(
char* wkb, te::common::
MachineByteOrder byteOrder) const throw(Exception);
327 virtual
bool isEmpty() const throw(std::exception);
341 virtual
bool isSimple() const throw(std::exception);
352 virtual
bool isValid() const throw(std::exception);
359 bool is3D() const throw();
366 bool isMeasured() const throw();
380 virtual
Geometry* getBoundary() const throw(std::exception);
389 virtual std::
size_t getNPoints() const throw() = 0;
413 virtual
bool equals(const
Geometry* const rhs, const
bool exact = false) const throw(std::exception);
428 virtual
bool disjoint(const
Geometry* const rhs) const throw(std::exception);
443 virtual
bool intersects(const
Geometry* const rhs) const throw(std::exception);
458 virtual
bool touches(const
Geometry* const rhs) const throw(std::exception);
473 virtual
bool crosses(const
Geometry* const rhs) const throw(std::exception);
488 virtual
bool within(const
Geometry* const rhs) const throw(std::exception);
503 virtual
bool contains(const
Geometry* const rhs) const throw(std::exception);
518 virtual
bool overlaps(const
Geometry* const rhs) const throw(std::exception);
538 virtual
bool relate(const
Geometry* const rhs, const std::
string& matrix) const throw(std::exception);
557 virtual std::
string relate(const
Geometry* const rhs) const throw(std::exception);
576 virtual
bool covers(const
Geometry* const rhs) const throw(std::exception);
595 virtual
bool coveredBy(const
Geometry* const rhs) const throw(std::exception);
611 virtual
Geometry* locateAlong(const
double& mValue) const throw(Exception) {
return locateBetween(mValue, mValue); };
628 virtual Geometry* locateBetween(
const double& mStart,
const double& mEnd)
const throw(Exception);
648 virtual double distance(
const Geometry*
const rhs)
const throw(std::exception);
663 virtual Geometry* buffer(
const double& distance)
const throw(std::exception);
681 virtual Geometry* buffer(
const double& distance,
int quadrantSegments)
const throw(std::exception);
704 virtual Geometry* buffer(
const double& distance,
705 int quadrantSegments,
719 virtual Geometry* convexHull()
const throw(std::exception);
736 virtual
Geometry* intersection(const
Geometry* const rhs) const throw(std::exception);
753 virtual
Geometry* Union(const
Geometry* const rhs) const throw(std::exception);
770 virtual
Geometry* difference(const
Geometry* const rhs) const throw(std::exception);
787 virtual
Geometry* symDifference(const
Geometry* const rhs) const throw(std::exception);
803 virtual
bool dWithin(const
Geometry* const rhs, const
double& distance) const throw(std::exception);
821 static
GeomType getGeomTypeId(const std::
string& gtype);
830 static
bool isGeomType(const std::
string& stype);
837 static
void loadGeomTypeId();
851 int getTypeCode() const;
858 std::
string toString()
const {
return asText(); }
876 #endif // __TERRALIB_GEOMETRY_INTERNAL_GEOMETRY_H
#define TEGEOMEXPORT
You can use this macro in order to export/import classes and functions from this module.
A visitor interface for the Geometry hierarchy.
int getSRID() const
It returns the Spatial Reference System ID associated to this geometric object.
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
GeomType m_gType
Internal geometry type.
An exception class for the Geometry module.
#define TE_DEFINE_VISITABLE
Dimensionality
From Wikipedia: "in mathematics, the dimension of an object is an intrinsic property, independent of the space in which the object may happen to be embedded".
MachineByteOrder
Endianness.
int m_srid
The Spatial Reference System code associated to the Geometry.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
GeomType
Each enumerated type is compatible with a Well-known Binary (WKB) type code.
static std::map< std::string, GeomType > sm_geomTypeMap
A set of geometry type names (in UPPER CASE).
GeomType getGeomTypeId() const
It returns the geometry subclass type identifier.
boost::shared_ptr< Geometry > GeometryShrPtr
A base class for values that can be retrieved from the data access module.
BufferCapStyle
Buffer end cap style.
Envelope * m_mbr
The geometry minimum bounding rectangle.
An Envelope defines a 2D rectangular region.
The root of all hierarchies that can be visited.