27 #include "../dataaccess/datasource/DataSourceInfo.h"
28 #include "../dataaccess/datasource/DataSourceManager.h"
29 #include "../dataaccess/utils/Utils.h"
30 #include "../geometry/Geometry.h"
31 #include "../geometry/GeometryCollection.h"
32 #include "../geometry/GeometryProperty.h"
33 #include "../geometry/MultiPoint.h"
34 #include "../geometry/MultiLineString.h"
35 #include "../geometry/MultiPolygon.h"
36 #include "../geometry/Point.h"
37 #include "../memory/DataSet.h"
45 #include <boost/algorithm/string.hpp>
51 std::auto_ptr<te::gm::Geometry> seedGeometry = items[0]->getGeometry(geomIdx);
54 resultGeometry = seedGeometry.release();
58 std::auto_ptr<te::gm::Geometry> teGeom = items[1]->getGeometry(geomIdx);
61 resultGeometry = seedGeometry->
Union(teGeom.release());
63 resultGeometry = seedGeometry.release();
69 for(std::size_t i = 1; i < items.size(); ++i)
71 std::auto_ptr<te::gm::Geometry> currentGeom = items[i]->getGeometry(geomIdx);
73 if(currentGeom->isValid())
74 teGeomColl->
add(currentGeom.release());
77 resultGeometry = seedGeometry->
Union(teGeomColl);
87 for(std::size_t i = 0; i < geomVec.size(); ++i)
105 return resultGeometry;
112 std::auto_ptr<te::gm::Geometry> seedGeometry = items[0]->getGeometry(geomIdx);
115 resultGeometry = seedGeometry.release();
117 if(items.size() == 2)
119 std::auto_ptr<te::gm::Geometry> teGeom = items[1]->getGeometry(geomIdx);
121 if(teGeom->isValid())
122 resultGeometry = seedGeometry->
Union(teGeom.release());
124 resultGeometry = seedGeometry.release();
130 for(std::size_t i = 1; i < items.size(); ++i)
132 std::auto_ptr<te::gm::Geometry> currentGeom = items[i]->getGeometry(geomIdx);
134 if(currentGeom->isValid())
135 teGeomColl->
add(currentGeom.release());
138 resultGeometry = seedGeometry->
Union(teGeomColl);
141 return resultGeometry;
147 for(std::size_t i = 0; i < geomVec.size(); ++i)
151 gcOut->
add(geomVec[i]);
159 std::size_t found = fullName.rfind(
".");
161 if(found >= std::string::npos)
164 return fullName.substr(found + 1);
int getSRID() const
It returns the Spatial Reference System ID associated to this geometric object.
GeomType
Each enumerated type is compatible with a Well-known Binary (WKB) type code.
Utility functions for the data access module.
te::gm::Geometry * GetGeometryUnion(const std::vector< te::mem::DataSetItem * > &items, size_t geomIdx, te::gm::GeomType outGeoType)
It returns the union of a geometry vector.
void SplitGeometryCollection(te::gm::GeometryCollection *geomIn, te::gm::GeometryCollection *gcOut)
GeomType getGeomTypeId() const
It returns the geometry subclass type identifier.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
te::gm::GeomType GeomOpResultType(te::gm::GeomType firstGeom, te::gm::GeomType secondGeom)
void add(Geometry *g)
It adds the geometry into the collection.
const std::vector< Geometry * > & getGeometries() const
It returns a reference to the internal list of geometries.
void setGeometryN(std::size_t i, Geometry *g)
It sets the n-th geometry in this geometry collection.
virtual Geometry * Union(const Geometry *const rhs) const
It returns a geometric object that represents the point set union with another geometry.
It is a collection of other geometric objects.
std::string GetSimpleTableName(std::string fullName)