27 #include "../color/RGBAColor.h" 28 #include "../common/progress/TaskProgress.h" 29 #include "../common/Globals.h" 30 #include "../common/STLUtils.h" 31 #include "../common/StringUtils.h" 32 #include "../core/translator/Translator.h" 33 #include "../dataaccess/dataset/DataSet.h" 34 #include "../dataaccess/dataset/DataSetType.h" 35 #include "../dataaccess/query/And.h" 36 #include "../dataaccess/query/EqualTo.h" 37 #include "../dataaccess/query/GreaterThanOrEqualTo.h" 38 #include "../dataaccess/query/LessThanOrEqualTo.h" 39 #include "../dataaccess/query/LiteralDouble.h" 40 #include "../dataaccess/query/LiteralEnvelope.h" 41 #include "../dataaccess/query/LiteralString.h" 42 #include "../dataaccess/query/PropertyName.h" 43 #include "../dataaccess/query/ST_Intersects.h" 44 #include "../dataaccess/utils/Utils.h" 45 #include "../fe/Filter.h" 46 #include "../fe/Utils.h" 47 #include "../geometry/Coord2D.h" 48 #include "../geometry/Envelope.h" 49 #include "../geometry/GeometryProperty.h" 50 #include "../geometry/MultiPolygon.h" 51 #include "../geometry/Polygon.h" 52 #include "../raster/Raster.h" 53 #include "../raster/RasterProperty.h" 54 #include "../se/FeatureTypeStyle.h" 55 #include "../se/CoverageStyle.h" 56 #include "../se/Rule.h" 57 #include "../se/Utils.h" 58 #include "../srs/Config.h" 70 #include "../dataaccess/query/OrderBy.h" 71 #include "../dataaccess/query/OrderByItem.h" 72 #include "../dataaccess/query/Select.h" 75 #include <boost/format.hpp> 76 #include <boost/lexical_cast.hpp> 77 #include <boost/math/special_functions/round.hpp> 96 const double& scale,
bool* cancel)
114 else if(layer->
getSRID() != srid)
116 throw Exception(
TE_TR(
"The layer or map don't have a valid SRID!"));
135 std::unique_ptr<LayerSchema> schema(layer->
getSchema());
136 assert(schema.get());
141 if(schema->hasGeom())
145 if(spatialPropertyName.empty())
150 assert(geometryProperty);
168 throw Exception((boost::format(
TE_TR(
"Could not create a default feature type style to the layer %1%.")) % layer->
getTitle()).str());
176 throw Exception(
TE_TR(
"The layer style is not a Feature Type Style!"));
180 else if(schema->hasRaster())
184 if(spatialPropertyName.empty())
189 assert(rasterProperty);
199 throw Exception((boost::format(
TE_TR(
"Could not create a default coverage style to the layer %1%.")) % layer->
getTitle()).str());
207 throw Exception(
TE_TR(
"The layer style is not a Coverage Style!"));
212 if(dataset.get() ==
nullptr)
213 throw Exception((boost::format(
TE_TR(
"Could not retrieve the data set from the layer %1%.")) % layer->
getTitle()).str());
216 std::unique_ptr<te::rst::Raster> raster(dataset->getRaster(rasterProperty->
getName()));
217 if(dataset.get() ==
nullptr)
218 throw Exception((boost::format(
TE_TR(
"Could not retrieve the raster from the layer %1%.")) % layer->
getTitle()).str());
225 throw Exception(
TE_TR(
"The layer don't have a geometry or raster property!"));
230 const std::string& geomPropertyName,
236 assert(!geomPropertyName.empty());
250 std::unique_ptr<te::da::DataSetType> schema = layer->
getSchema();
251 std::vector<te::dt::Property*> props = schema->getPrimaryKey()->getProperties();
253 while(++pksize < props.size())
255 m_oid.push_back(props[pksize-1]->getName());
256 if(props[pksize-1]->getDatasetName() != props[pksize]->getDatasetName())
260 for(
size_t i = 0; i < pksize; ++i)
271 std::size_t nRules = style->
getRules().size();
273 for(std::size_t i = 0; i < nRules; ++i)
285 std::unique_ptr<te::da::DataSet> dataset;
296 catch(std::exception& )
311 throw Exception(
TE_TR(
"Could not convert the OGC Filter expression to TerraLib expression!"));
324 dataset = layer->
getData(restriction);
328 catch(std::exception& )
334 if(dataset.get() ==
nullptr)
335 throw Exception((boost::format(
TE_TR(
"Could not retrieve the data set from the layer %1%.")) % layer->
getTitle()).str());
337 if(dataset->moveNext() ==
false)
341 const std::vector<te::se::Symbolizer*>& symbolizers = rule->
getSymbolizers();
344 std::string message =
TE_TR(
"Drawing the layer");
345 message +=
" " + layer->
getTitle() +
". ";
346 message +=
TE_TR(
"Rule");
347 message +=
" " + boost::lexical_cast<std::string>(i + 1) +
" " +
TE_TR(
"of") +
" ";
348 message += boost::lexical_cast<std::string>(nRules) +
".";
357 if(symbolizers.empty())
360 std::unique_ptr<te::gm::Geometry> g(dataset->getGeometry(gpos));
368 dataset->moveFirst();
371 std::size_t nSymbolizers = symbolizers.size();
373 for(std::size_t j = 0; j < nSymbolizers; ++j)
382 if(j != nSymbolizers - 1)
388 dataset->moveFirst();
403 const std::string& geomPropertyName,
408 assert(!geomPropertyName.empty());
424 assert(!propertyName.empty());
430 const std::size_t& precision = grouping->
getPrecision();
436 std::map<std::string, te::se::Rule*> uniqueRuleMap;
439 std::map<std::pair< double, double>,
te::se::Rule* > othersRuleMap;
441 for (std::size_t i = 0; i < layerRules.size(); ++i)
448 std::string uniqueValue;
452 uniqueRuleMap[uniqueValue] = ruleItem;
456 std::string lowerLimitStr;
457 std::string upperLimitStr;
461 double lowerLimit = atof(lowerLimitStr.c_str());
462 double upperLimit = atof(upperLimitStr.c_str());
463 std::pair<double, double> range(lowerLimit, upperLimit);
465 othersRuleMap[range] = ruleItem;
470 std::string message =
TE_TR(
"Drawing the grouping of layer");
471 message +=
" " + layer->
getTitle() +
".";
476 std::unique_ptr<te::da::DataSet> dataset;
481 catch(std::exception& )
486 if(dataset.get() ==
nullptr)
487 throw Exception((boost::format(
TE_TR(
"Could not retrieve the data set from the layer %1%.")) % layer->
getTitle()).str());
489 if(dataset->moveNext() ==
false)
496 std::unique_ptr<te::map::LayerSchema>
dt(layer->
getSchema());
500 bool needRemap =
false;
514 if (dataset->isNull(propertyPos))
517 value = dataset->getAsString(propertyPos, static_cast<int>(precision));
521 std::map<std::string, te::se::Rule*>::const_iterator it = uniqueRuleMap.find(value);
522 if (it == uniqueRuleMap.end())
529 double dvalue = atof(value.c_str());
530 std::map<std::pair< double, double>,
te::se::Rule*>::const_iterator it;
531 for (it = othersRuleMap.begin(); it != othersRuleMap.end(); ++it)
533 if (dvalue >= it->first.first && dvalue < it->first.second)
537 if (it != othersRuleMap.end())
545 std::unique_ptr<te::gm::Geometry> geom;
548 geom = dataset->getGeometry(gpos);
549 if(geom.get() ==
nullptr)
552 catch(std::exception& )
557 std::vector<te::se::Symbolizer*> symbolizers = rule->
getSymbolizers();
560 std::size_t nSymbolizers = symbolizers.size();
562 for(std::size_t j = 0; j < nSymbolizers; ++j)
573 geom->setSRID(layer->
getSRID());
574 geom->transform(srid);
577 canvas->
draw(geom.get());
579 if(chart && j == nSymbolizers - 1)
583 }
while(dataset->moveNext());
591 static_cast<int>(chart->
getWidth()),
599 const std::string& geomPropertyName,
604 assert(!geomPropertyName.empty());
611 std::unique_ptr<te::da::DataSetType> schema = layer->
getSchema();
612 std::vector<te::dt::Property*> props = schema->getPrimaryKey()->getProperties();
614 while(++pksize < props.size())
616 m_oid.push_back(props[pksize-1]->getName());
617 if(props[pksize-1]->getDatasetName() != props[pksize]->getDatasetName())
622 for(
size_t i = 0; i < pksize; ++i)
637 assert(!propertyName.empty());
643 const std::size_t& precision = grouping->
getPrecision();
646 const std::string gfunction = grouping->
getSummary();
652 std::map<std::string, te::se::Rule*> uniqueRuleMap;
655 std::map<std::pair< double, double>,
te::se::Rule* > othersRuleMap;
657 for (std::size_t i = 0; i < layerRules.size(); ++i)
664 std::string uniqueValue;
668 uniqueRuleMap[uniqueValue] = ruleItem;
672 std::string lowerLimitStr;
673 std::string upperLimitStr;
677 double lowerLimit = atof(lowerLimitStr.c_str());
678 double upperLimit = atof(upperLimitStr.c_str());
679 std::pair<double, double> range(lowerLimit, upperLimit);
681 othersRuleMap[range] = ruleItem;
686 std::string message =
TE_TR(
"Drawing the grouping of layer");
687 message +=
" " + layer->
getTitle() +
".";
692 std::unique_ptr<te::da::DataSet> dataset;
698 catch(std::exception& )
703 if(dataset.get() ==
nullptr)
704 throw Exception((boost::format(
TE_TR(
"Could not retrieve the data set from the layer %1%.")) % layer->
getTitle()).str());
706 if(dataset->moveNext() ==
false)
713 std::unique_ptr<te::map::LayerSchema>
dt(layer->
getSchema());
718 bool needRemap =
false;
722 std::vector<std::string> pkdata(pksize), pkdataaux(pksize);
723 std::vector<double> values;
725 std::vector<std::string> svalues;
732 std::string cfunction;
733 std::map<std::string, std::vector<double> > chartValues;
734 std::map<std::string, double> chartValue;
735 bool hasGroupNullValue =
false;
736 bool hasGroupNullValueAux =
false;
737 bool hasChartNullValue =
false;
738 bool hasChartNullValueAux =
false;
744 std::vector<size_t> propPos;
745 for(std::size_t i = 0; i < csize; ++i)
747 std::vector<double> v;
759 if(geomaux ==
nullptr)
760 geomaux = dataset->getGeometry(gpos).release();
761 if(geomaux ==
nullptr)
764 catch(std::exception& )
769 std::vector<te::se::Symbolizer*> symbolizers;
773 for(i = 0; i < pksize; ++i)
774 pkdata[i] = dataset->getAsString(
m_oid[i]);
776 for(i = 0; i < pksize; ++i)
778 if(dataset->isAtBegin())
779 pkdataaux[i] = dataset->getAsString(
m_oid[i]);
782 if(pkdata[i] != pkdataaux[i])
792 if(hasGroupNullValue ==
false && dataset->isNull(propertyPos) ==
false)
797 svalues.push_back(dataset->getAsString(propertyPos, static_cast<int>(precision)));
805 hasGroupNullValue =
true;
807 if(hasChartNullValue ==
false)
809 for(std::size_t i = 0; i < csize; ++i)
813 hasChartNullValue =
true;
817 if(hasChartNullValue ==
false)
819 for(std::size_t i = 0; i < csize; ++i)
837 if(hasGroupNullValue ==
false)
845 svalue = boost::lexical_cast<std::string>(value);
850 std::map<std::string, te::se::Rule*>::const_iterator it = uniqueRuleMap.find(svalue);
851 if (it == uniqueRuleMap.end())
861 std::map<std::pair< double, double>,
te::se::Rule*>::const_iterator it;
862 for (it = othersRuleMap.begin(); it != othersRuleMap.end(); ++it)
864 if(value >= it->first.first && value <= it->first.second)
868 if (it != othersRuleMap.end())
890 if(hasChartNullValue ==
false)
892 for(std::size_t i = 0; i < csize; ++i)
899 geomaux = dataset->getGeometry(gpos).release();
901 catch(std::exception& )
907 for(std::size_t i = 0; i < csize; ++i)
912 if(dataset->isNull(propertyPos) ==
false)
917 svalues.push_back(dataset->getAsString(propertyPos, static_cast<int>(precision)));
925 hasGroupNullValueAux =
true;
927 for(std::size_t i = 0; i < csize; ++i)
931 hasChartNullValueAux =
true;
935 if(hasChartNullValueAux ==
false)
937 for(std::size_t i = 0; i < csize; ++i)
943 std::size_t nSymbolizers = symbolizers.size();
945 for(std::size_t j = 0; j < nSymbolizers; ++j)
962 if(chart && hasChartNullValue ==
false && j == nSymbolizers - 1)
966 hasChartNullValue = hasChartNullValueAux;
967 hasGroupNullValue = hasGroupNullValueAux;
968 hasChartNullValueAux =
false;
969 hasGroupNullValueAux =
false;
970 }
while(dataset->moveNext());
975 if(hasChartNullValue ==
false)
977 for(std::size_t i = 0; i < csize; ++i)
989 static_cast<int>(chart->
getWidth()),
997 int fromSRID,
int toSRID,
1004 size_t pksize =
m_oid.size();
1005 std::vector<std::string> pkdata(pksize), pkdataaux(pksize);
1008 bool needRemap =
false;
1013 std::string cfunction;
1014 std::map<std::string, std::vector<double> > chartValues;
1015 std::map<std::string, double> chartValue;
1016 bool hasChartNullValue =
false;
1017 bool hasChartNullValueAux =
false;
1023 std::vector<size_t> propPos;
1024 for(std::size_t i = 0; i < csize; ++i)
1026 std::vector<double> v;
1038 if(geomaux ==
nullptr)
1040 if(geomaux ==
nullptr)
1043 catch(std::exception& )
1052 for (i = 0; i < pksize; ++i)
1057 for(i = 0; i < pksize; ++i)
1063 if(pkdata[i] != pkdataaux[i])
1072 if(hasChartNullValue ==
false)
1075 for(std::size_t i = 0; i < csize; ++i)
1081 hasChartNullValue =
true;
1092 if(hasChartNullValue ==
false)
1094 for(std::size_t i = 0; i < csize; ++i)
1099 for(std::size_t i = 0; i < csize; ++i)
1102 hasChartNullValueAux =
false;
1103 for(std::size_t i = 0; i < csize; ++i)
1107 hasChartNullValueAux =
true;
1111 if(hasChartNullValueAux ==
false)
1113 for(std::size_t i = 0; i < csize; ++i)
1121 for(std::size_t i = 0; i < csize; ++i)
1128 hasChartNullValue =
true;
1142 catch(std::exception& )
1166 if(chart && hasChartNullValue ==
false)
1169 hasChartNullValue = hasChartNullValueAux;
1170 hasChartNullValueAux =
false;
1184 if(chart && hasChartNullValue ==
false)
1186 if(chartValues.empty() ==
false)
1188 for(std::size_t i = 0; i < csize; ++i)
1203 static_cast<unsigned int>(chart->
getWidth()),
1204 static_cast<unsigned int>(chart->
getHeight()));
1232 double dx = 0.0;
double dy = 0.0;
1235 double dw = dx + chart->
getWidth();
1244 std::vector<std::size_t> report;
1258 std::size_t width = 0;
1285 double dx = 0.0;
double dy = 0.0;
1288 double dw = dx + chart->
getWidth();
1297 std::vector<std::size_t> report;
1311 std::size_t width = 0;
virtual std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const =0
Method for retrieving a geometric attribute value.
TEDATAACCESSEXPORT te::rst::RasterProperty * GetFirstRasterProperty(const DataSetType *dt)
MultiPolygon is a MultiSurface whose elements are Polygons.
const std::vector< std::string > & getProperties() const
if(WIN32) add_definitions(-D_SCL_SECURE_NO_WARNINGS-DTEWCSDLL) endif() file(GLOB TERRALIB_SRC_FILES $
bool intersects(const Envelope &rhs) const
It returns true if the envelopes "spatially intersects".
The Style defines the styling that is to be applied to a geographic dataset (vector geometries or cov...
Spatial intersects operator.
This is the base class for layers.
virtual const te::gm::Envelope & getExtent() const
It returns the Layer extent (or minimum bounding box).
std::string getSummary() const
It gets the grouping summary. It is used only in case 1 to n.
TESEEXPORT Symbolizer * CreateSymbolizer(const te::gm::GeomType &geomType)
Try creates an appropriate symbolizer based on given geometry type.
std::vector< std::string > m_oid
static te::dt::Date dx(2010, 12, 31)
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
virtual const std::string & getTitle() const
It returns the layer title.
TEDATAACCESSEXPORT bool HasLinkedTable(te::da::DataSetType *type)
It checks if the datasettype has a linked table.
A class that models the name of any property of an object.
Base exception class for plugin module.
const size_t getPrecision() const
It gets the precision used for the property values.
A Symbolizer describes how a feature is to appear on a map.
GeomType getGeomTypeId() const _NOEXCEPT_OP(true)
It returns the geometry subclass type identifier.
A visitor that converts a OGC Filter Expression to TerraLib Expression.
The CoverageStyle defines the styling that is to be applied to a subset of Coverage data...
This is the base class for Layers.
std::string getPropertyName() const
It gets the property name whose values will be grouped.
TESEEXPORT Style * CreateCoverageStyle(const std::vector< te::rst::BandProperty * > &properties)
Try creates an appropriate coverage style based on given band properties.
This class can be used to inform the progress of a task.
TEDATAACCESSEXPORT std::size_t GetPropertyPos(const DataSet *dataset, const std::string &name)
virtual bool isAtBegin() const =0
It tells if the dataset internal pointer is on the first element of the collection or not...
This is a singleton for managing chart renderer instance available in the system. ...
double m_urx
Upper right corner x-coordinate.
boost::ptr_vector< OrderByItem > OrderBy
A class that can be used to model an ORDER BY clause.
te::da::Expression * getExpression(const te::fe::Filter *f)
It converts the OGC Filter Expression to a TerraLib Expression.
A layer resulting from a query.
An utility struct for representing 2D coordinates.
TEDATAACCESSEXPORT double GetValueAsDouble(const te::da::DataSet *ds, const size_t pos)
It gets the value as double.
std::vector< te::color::RGBAColor ** > m_chartImages
const te::fe::Filter * getFilter() const
#define TE_TR(message)
It marks a string in order to get translated.
void push_back(Symbolizer *s)
It renders the objects associated to a query layer.
bool isActive() const
Verify if the task is active.
Boolean logic operator: AND.
This is an abstract class that models a query expression.
virtual te::map::Chart * getChart() const
It returns the Chart associated to the Layer.
TESEEXPORT Style * CreateFeatureTypeStyle(const te::gm::GeomType &geomType)
Try creates an appropriate feature type style based on given geometry type.
Rule * getRule(std::size_t i) const
const std::vector< Rule * > & getRules() const
virtual bool moveNext()=0
It moves the internal pointer to the next item of the collection.
~QueryLayerRenderer()
Destructor.
This class contains the parameters needed for grouping the values of a Property.
virtual void setWindow(const double &llx, const double &lly, const double &urx, const double &ury)=0
It sets the world (or window) coordinates area (supposing a cartesian reference system).
Coord2D getCenter() const
It returns the rectangle's center coordinate.
void Free(std::vector< T * > *v)
This function can be applied to a pointer to a vector of pointers.
TEFEEXPORT void GetFilterStepValues(const te::fe::Filter *filter, std::string &valueMin, std::string &valueMax)
void drawLayerGeometries(AbstractLayer *layer, const std::string &geomPropertyName, te::se::FeatureTypeStyle *style, Canvas *canvas, const te::gm::Envelope &bbox, int srid)
It draws the abstract layer in the given canvas using the SRS informed.
TEMAPEXPORT void DrawRaster(te::da::DataSetType *type, te::da::DataSourcePtr ds, Canvas *canvas, const te::gm::Envelope &bbox, int bboxSRID, const te::gm::Envelope &visibleArea, int srid, te::se::CoverageStyle *style, te::map::RasterContrast *rc, const double &scale, bool *cancel)
double m_llx
Lower left corner x-coordinate.
void drawDatSetGeometries(te::da::DataSet *dataset, const std::size_t &gpos, Canvas *canvas, int fromSRID, int toSRID, Chart *chart, te::common::TaskProgress *task=0)
It draws the data set geometries in the given canvas using the informed SRS.
This class represents the informations needed to build map charts.
static T & getInstance()
It returns a reference to the singleton instance.
void buildChart(const Chart *chart, te::da::DataSet *dataset, te::gm::Geometry *geom)
const Envelope * getMBR() const _NOEXCEPT_OP(true)
It returns the minimum bounding rectangle for the geometry in an internal representation.
An Envelope defines a 2D rectangular region.
The FeatureTypeStyle defines the styling that is to be applied to a dataset that can be viewed as a f...
void drawLayerGrouping(AbstractLayer *layer, const std::string &geomPropertyName, Canvas *canvas, const te::gm::Envelope &bbox, int srid)
It draws the grouping of the abstract layer in the given canvas using the SRS informed.
virtual te::se::Style * getStyle() const
It returns the Style associated to the layer.
virtual std::unique_ptr< LayerSchema > getSchema() const =0
It returns the layer schema.
std::size_t getHeight() const
bool isVisible() const
It gets the chart visibility.
GeomType getGeometryType() const
It returns the geometry subtype allowed for the property.
static te::dt::TimeDuration dt(20, 30, 50, 11)
virtual int getHeight() const =0
It returns the canvas height.
te::sam::rtree::Index< std::size_t, 8 > m_rtree
A visitor that converts a OGC Filter Expression to TerraLib Expression.
TEDATAACCESSEXPORT double GetSummarizedValue(std::vector< double > &values, const std::string &summary)
It gets the summarized value.
void pulse()
Calls setCurrentStep() function using getCurrentStep() + 1.
virtual std::string getAsString(std::size_t i, int precision=0) const
Method for retrieving a data value as a string plain representation.
virtual void drawImage(char *src, std::size_t size, ImageType t)=0
It draws the src image over the canvas.
te::da::Select * getQuery() const
A filter is any valid predicate expression.
Query * clone() const
It creates a new copy of this query.
int search(const te::gm::Envelope &mbr, std::vector< DATATYPE > &report) const
Range search query.
This class represents the informations needed to build map charts.
Utility functions for the data access module.
void setOrderBy(OrderBy *o)
It sets the list of expressions used to sort the output result.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
A Select models a query to be used when retrieving data from a DataSource.
TEDATAACCESSEXPORT double Round(const double &value, const size_t &precision)
It gets the round value.
const std::vector< Symbolizer * > & getSymbolizers() const
double m_lly
Lower left corner y-coordinate.
void setPropertiesPos(const std::vector< size_t > &propPos)
virtual te::map::RasterContrast * getRasterContrast() const
It returns the raster contrast associated to the Layer.
A dataset is the unit of information manipulated by the data access module of TerraLib.
A canvas is an abstraction of a drawing area.
bool isVisible() const
It gets the grouping visibility.
Polygon is a subclass of CurvePolygon whose rings are defined by linear rings.
void draw(AbstractLayer *layer, Canvas *canvas, const te::gm::Envelope &bbox, int srid, const double &scale, bool *cancel)
It draws the layer geographic objects in the given canvas using the SRS informed. ...
GroupingType
The grouping type associated to the layer.
A Rule is used to attach property/scale conditions to and group the individual symbols used for rende...
virtual std::unique_ptr< te::da::DataSet > getData(te::common::TraverseType travType=te::common::FORWARDONLY, const te::common::AccessPolicy accessPolicy=te::common::RAccess) const =0
It gets the dataset identified by the layer name.
void insert(const te::gm::Envelope &mbr, const DATATYPE &data)
It inserts an item into the tree.
const std::vector< size_t > & getPropertiesPos() const
virtual te::map::Grouping * getGrouping() const
It returns the Grouping associated to the Layer.
double m_ury
Upper right corner y-coordinate.
void setQuery(te::da::Select *s)
std::string getSummary() const
It gets the grouping summary. It is used only in case 1 to n.
Coord2D * getCentroidCoord() const
It returns the mathematical centroid for this surface as a coordinate.
virtual void setStyle(te::se::Style *style)
It sets the Style associated to the layer.
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
virtual void setSRID(int srid) _NOEXCEPT_OP(true)=0
It sets the Spatial Reference System ID of the geometry and all its parts if it is a GeometryCollecti...
const GroupingType getType() const
It gets the grouping type.
bool getAvoidConflicts() const
A layer resulting from a query.
A class that models a literal for Envelope values.
virtual const std::string & getGeomPropertyName() const
virtual bool isNull(std::size_t i) const =0
It checks if the attribute value is NULL.
virtual int getSRID() const
It returns the Spatial Reference System ID associated to the Layer.
This class contains the parameters needed for grouping the values of a Property.
std::vector< te::rst::BandProperty * > & getBandProperties()
Returns a reference to the list of bands definitions.
WorldDeviceTransformer m_transformer
Envelope intersection(const Envelope &rhs) const
It returns an envelope that represents the point set intersection with another envelope.
void drawLayerGroupingMem(AbstractLayer *layer, const std::string &geomPropertyName, Canvas *canvas, const te::gm::Envelope &bbox, int srid)
It draws the grouping of the abstract layer in the given canvas using the SRS informed.
A class that can be used in an ORDER BY clause to sort the items of a resulting query.
TEDATAACCESSEXPORT te::gm::GeometryProperty * GetFirstGeomProperty(const DataSetType *dt)
std::vector< te::gm::Coord2D > m_chartCoordinates
virtual void transform(int srid) _NOEXCEPT_OP(false)=0
It converts the coordinate values of the geometry to the new spatial reference system.
void transform(int oldsrid, int newsrid)
It will transform the coordinates of the Envelope from the old SRS to the new one.
virtual void draw(const te::gm::Geometry *geom)=0
It draws the geometry on canvas.
bool isValid() const
It tells if the rectangle is valid or not.
virtual int getWidth() const =0
It returns the canvas width.
Coord2D * getCentroidCoord() const
std::size_t getWidth() const
static const std::string sm_nanStr
Not a number string value.
const std::string & getName() const
It returns the property name.
void drawLayerLinkedGroupingMem(AbstractLayer *layer, const std::string &geomPropertyName, Canvas *canvas, const te::gm::Envelope &bbox, int srid)
TEFEEXPORT void GetFilterUniqueValue(const te::fe::Filter *filter, std::string &value)