27 #include "../common/STLUtils.h"
28 #include "../common/Translator.h"
37 #include <geos/geom/Geometry.h>
38 #include <geos/geom/IntersectionMatrix.h>
39 #include <geos/operation/buffer/OffsetCurveBuilder.h>
40 #include <geos/util/GEOSException.h>
85 assert(m_rings.size() > 0);
91 return (m_rings.size() > 0) ? (m_rings.size() - 1) : 0;
96 if(size < m_rings.size())
98 std::size_t oldSize = m_rings.size();
99 for(std::size_t i = size; i < oldSize; ++i)
103 m_rings.resize(size);
108 assert(i < getNumInteriorRings());
109 return m_rings[i + 1];
114 assert(i < m_rings.size());
121 assert(i < m_rings.size());
123 m_rings.erase(m_rings.begin() + i);
135 std::auto_ptr<geos::geom::Geometry> g(GEOSWriter::write(
this));
140 throw Exception(
TR_GEOM(
"getArea routine is supported by GEOS! Please, enable the GEOS support."));
176 std::size_t n = m_rings.size();
178 for(std::size_t i = 0; i < n; ++i)
179 m_rings[i]->setSRID(srid);
189 std::size_t n = m_rings.size();
191 for(std::size_t i = 0; i < n; ++i)
192 m_rings[i]->transform(srid);
207 std::size_t n = m_rings.size();
213 m_rings[0]->computeMBR(
true);
215 *m_mbr = *(m_rings[0]->getMBR());
218 for(std::size_t i = 1; i < n; ++i)
219 m_rings[i]->computeMBR(
true);
224 std::size_t n = m_rings.size();
228 for(std::size_t i = 0; i < n; ++i)
229 sum += m_rings[i]->getNPoints();
virtual ~CurvePolygon()
Virtual destructor.
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
double getArea() const
It returns the area of this surface, as measured in the spatial reference system of this surface...
void setSRID(int srid)
It sets the Spatial Reference System ID of the geometry and all its parts if it is a GeometryCollecti...
CurvePolygon is a planar surface defined by 1 exterior boundary and 0 or more interior boundaries...
void FreeContents(boost::unordered_map< K, V * > &m)
This function can be applied to a map of pointers. It will delete each pointer in the map...
Curve * getInteriorRingN(std::size_t i) const
It returns the n-th interior ring for this curve polygon as a curve.
void Clone(const std::vector< T * > &src, std::vector< T * > &dst)
This function can be applied to a vector of pointers.
virtual te::dt::AbstractData * clone() const
It clones the linestring.
#define TR_GEOM(message)
It marks a string in order to get translated. This is a special mark used in the Vector Geometry modu...
A class that converts a TerraLib geometry to a GEOS geometry.
virtual CurvePolygon & operator=(const CurvePolygon &rhs)
Assignment operator.
std::size_t getNumInteriorRings() const
It returns the number of interior rings in this CurvePolygon.
virtual Surface & operator=(const Surface &rhs)
Assignment operator.
Coord2D * getCentroidCoord() const
It returns the mathematical centroid for this surface as a coordinate.
std::vector< Curve * > m_rings
An array with the ring list.
An utility struct for representing 2D coordinates.
Curve * getExteriorRing() const
It returns the exterior ring of this CurvePolygon.
Curve is an abstract class that represents 1-dimensional geometric objects stored as a sequence of co...
Point * getPointOnSurface() const
It returns a point guaranteed to be on this surface.
double getPerimeter() const
It returns the length of the boundary for the surface.
A point with x and y coordinate values.
void clear()
It deletes all the rings of the CurvePolygon and clear it.
A point with x and y coordinate values.
GeomType
Each enumerated type is compatible with a Well-known Binary (WKB) type code.
void removeRingN(std::size_t i)
It removes the n-th ring in this CurvePolygon.
Coord2D * getCoordOnSurface() const
It returns a coordinate guaranteed to be on this surface.
A base class for values that can be retrieved from the data access module.
void computeMBR(bool cascade) const
It computes the minimum bounding rectangle for the curve polygon.
virtual const std::string & getGeometryType() const
The name of the geometry subtype for curve polygons is: CurvePolygon.
CurvePolygon is a planar surface defined by 1 exterior boundary and 0 or more interior boundaries...
void transform(int srid)
It converts the coordinate values of the geometry to the new spatial reference system.
Curve is an abstract class that represents 1-dimensional geometric objects stored as a sequence of co...
An Envelope defines a 2D rectangular region.
CurvePolygon(std::size_t nRings, GeomType t, int srid=0, Envelope *mbr=0)
It initializes the curve polygon with the specified spatial reference system id and envelope...
std::size_t getNPoints() const
it returns the number of points (vertexes) in the geometry.
Point * getCentroid() const
It returns the mathematical centroid for this surface as a point.
void setRingN(std::size_t i, Curve *r)
It sets the informed position ring to the new one.
static const std::string sm_typeName
An Envelope defines a 2D rectangular region.
void setNumRings(std::size_t size)
It sets the number of rings in this curve polygon.
Surface is an abstract class that represents a 2-dimensional geometric objects.
void makeInvalid()
It will invalidated the envelope.