LayerPropertiesInfo.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/qt/widgets/layer/info/LayerPropertiesInfo.cpp
22 
23  \brief
24 */
25 
26 #include "../../../../core/uri/URI.h"
27 #include "../../../../core/uri/Utils.h"
28 #include "../../../../dataaccess/dataset/DataSet.h"
29 #include "../../../../dataaccess/datasource/DataSourceInfoManager.h"
30 #include "../../../../dataaccess/utils/Utils.h"
31 #include "../../../../datatype/Utils.h"
32 #include "../../../../geometry/GeometryProperty.h"
33 #include "../../../../maptools/AbstractLayer.h"
34 #include "../../../../raster/RasterSummary.h"
35 #include "../../../../raster/RasterSummaryManager.h"
36 #include "../../../../raster/Band.h"
37 #include "../../../../raster/BandProperty.h"
38 #include "../../../../raster/Utils.h"
39 #include "../../../../srs/SpatialReferenceSystemManager.h"
40 #include "../../propertybrowser/AbstractPropertyManager.h"
41 
42 #include "LayerPropertiesInfo.h"
43 
45  te::qt::widgets::AbstractPropertyItem(pb),
46  m_layer(layer)
47 {
48  QtProperty* layerInfo_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Layer properties"));
49 
50  // Attributes
51  QtProperty* id_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Id"));
52  layerInfo_prop->addSubProperty(id_prop);
53  id_prop->setEnabled(false);
54 
55  QtProperty* title_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Title"));
56  layerInfo_prop->addSubProperty(title_prop);
57  title_prop->setPropertyName("title");
58  title_prop->setEnabled(false);
59 
60  QtProperty* srid_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("SRID"));
61  layerInfo_prop->addSubProperty(srid_prop);
62  srid_prop->setPropertyName("srid");
63  srid_prop->setEnabled(false);
64 
65  QtProperty* connection_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Connection"));
66  layerInfo_prop->addSubProperty(connection_prop);
67  connection_prop->setPropertyName("connection");
68  connection_prop->setEnabled(false);
69 
70  QtProperty* numofitens_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Num of Itens"));
71  layerInfo_prop->addSubProperty(numofitens_prop);
72  numofitens_prop->setPropertyName("numofitens");
73  numofitens_prop->setEnabled(false);
74 
75  /// Bounding Box
76  QtProperty* bbox_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Bounding box"));
77 
78  QtProperty* llx_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("min-x"));
79  QtProperty* lly_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("min-y"));
80  QtProperty* urx_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("max-x"));
81  QtProperty* ury_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("max-y"));
82 
83  llx_prop->setEnabled(false);
84  lly_prop->setEnabled(false);
85  urx_prop->setEnabled(false);
86  ury_prop->setEnabled(false);
87 
88  bbox_prop->addSubProperty(llx_prop);
89  bbox_prop->addSubProperty(lly_prop);
90  bbox_prop->addSubProperty(urx_prop);
91  bbox_prop->addSubProperty(ury_prop);
92 
93  layerInfo_prop->addSubProperty(bbox_prop);
94 
95  // Visibility
96  QtProperty* vis_prop = te::qt::widgets::AbstractPropertyManager::getInstance().m_enumManager->addProperty(tr("Visibility"));
97  QStringList visEnum;
98  visEnum << tr("Not visible") << tr("visible") << tr("Partially visible");
99  te::qt::widgets::AbstractPropertyManager::getInstance().m_enumManager->setEnumNames(vis_prop, visEnum);
100 
101  layerInfo_prop->addSubProperty(vis_prop);
102  vis_prop->setPropertyName("visibility");
103  vis_prop->setEnabled(false);
104 
105  //setting values
106  QString sridStr = QString::number(layer->getSRID());
107  sridStr += QObject::tr(" - ");
108  sridStr += QString(te::srs::SpatialReferenceSystemManager::getInstance().getName(layer->getSRID()).c_str());
109 
110  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(id_prop, m_layer->getId().c_str());
111  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(title_prop, m_layer->getTitle().c_str());
112  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(srid_prop, sridStr);
113 
114  // Get the data souce info
116  const te::core::URI& uri = info->getConnInfo();
117 
118  //Adjusting the connection information
119  QString connInfo = QObject::tr("Scheme: ") + uri.scheme().c_str();
120 
121  if (!uri.user().empty())
122  connInfo += QObject::tr(" User: ") + uri.user().c_str();
123 
124  if (!uri.host().empty())
125  connInfo += QObject::tr(" Host: ") + uri.host().c_str();
126 
127  if (!uri.port().empty())
128  connInfo += QObject::tr(" Port: ") + uri.port().c_str();
129 
130  if (!uri.path().empty())
131  connInfo += QObject::tr(" Path: ") + uri.path().c_str();
132 
133  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(connection_prop, connInfo);
134 
135  // Get the DataSource
137  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(numofitens_prop, static_cast<int>(dsource->getNumberOfItems(layer->getDataSetName())));
138 
139  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(llx_prop, QString::number(m_layer->getExtent().getLowerLeftX(), 'f'));
140  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(lly_prop, QString::number(m_layer->getExtent().getLowerLeftY(), 'f'));
141  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(urx_prop, QString::number(m_layer->getExtent().getUpperRightX(), 'f'));
142  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(ury_prop, QString::number(m_layer->getExtent().getUpperRightY(), 'f'));
143  te::qt::widgets::AbstractPropertyManager::getInstance().m_enumManager->setValue(vis_prop, (int) m_layer->getVisibility());
144 
145  addProperty(layerInfo_prop, tr("Layer properties"), QColor(255, 255, 175));
146 
147  //check if layer has raster
148  std::unique_ptr<te::da::DataSetType> dsType = layer->getSchema();
149 
150  if(dsType->hasRaster())
151  {
153  }
154  else if (dsType->hasGeom())
155  {
156  setLayerVecProperties(layer);
157  }
158 
159  m_updateSummery = true;
160  m_updateReadAll = true;
161 }
162 
164 
166  int /*value*/)
167 {
168  //if(p->propertyName() == "srid")
169  // m_layer->setSRID(value);
170  //else if(p->propertyName() == "visibility")
171  // m_layer->setVisibility((te::map::Visibility)value);
172 }
173 
175  QtProperty* /*p*/, const QString& /*value*/)
176 {
177  //if(p->propertyName() == "title")
178  // m_layer->setTitle(value.toUtf8().data());
179 }
180 
182 {
183 }
184 
186 {
187  //get raster from layer
188  std::unique_ptr<te::da::DataSet> dataSet = rasterLayer->getData();
189 
190  if(dataSet->isBeforeBegin())
191  dataSet->moveFirst();
192 
193  std::size_t rpos = te::da::GetFirstPropertyPos(dataSet.get(), te::dt::RASTER_TYPE);
194 
195  std::unique_ptr<te::rst::Raster> raster = dataSet->getRaster(rpos);
196 
197  if(!raster.get())
198  return;
199 
200  //create top property
201  m_rasterInfoProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Raster properties"));
202 
203  //add properties
204  QtProperty* nRasterNameProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Raster Name"));
205  QtProperty* nLinesProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Number of Lines"));
206  QtProperty* nColumnsProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Number of Columns"));
207  QtProperty* nBandsProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Number of Bands"));
208  QtProperty* nResXProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->addProperty(tr("Resolution X"));
209  QtProperty* nResYProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->addProperty(tr("Resolution Y"));
210  QtProperty* nAccessProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Access Policy"));
211  QtProperty* nMultiResProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Multi Resolution Levels"));
212 
213 
214  //add properties to parent property
215  m_rasterInfoProp->addSubProperty(nRasterNameProp);
216  m_rasterInfoProp->addSubProperty(nLinesProp);
217  m_rasterInfoProp->addSubProperty(nColumnsProp);
218  m_rasterInfoProp->addSubProperty(nBandsProp);
219  m_rasterInfoProp->addSubProperty(nResXProp);
220  m_rasterInfoProp->addSubProperty(nResYProp);
221  m_rasterInfoProp->addSubProperty(nAccessProp);
222  m_rasterInfoProp->addSubProperty(nMultiResProp);
223 
224  //set the property state
225  nRasterNameProp->setEnabled(false);
226  nLinesProp->setEnabled(false);
227  nColumnsProp->setEnabled(false);
228  nBandsProp->setEnabled(false);
229  nResXProp->setEnabled(false);
230  nResYProp->setEnabled(false);
231  nAccessProp->setEnabled(false);
232  nMultiResProp->setEnabled(false);
233 
234 
236 
237  if(unitPtr.get())
238  {
239  if(unitPtr->getId() == te::common::UOM_Degree)
240  {
241  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setDecimals(nResXProp, 6);
242  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setDecimals(nResYProp, 6);
243 }
244  else if(unitPtr->getId() == te::common::UOM_Metre)
245  {
246  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setDecimals(nResXProp, 2);
247  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setDecimals(nResYProp, 2);
248  }
249  }
250 
251  //set properties values
252  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nRasterNameProp,
253  raster->getName().empty() ? QString() : QString::fromStdString( raster->getName() ) );
254  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(nLinesProp, (int)raster->getNumberOfRows());
255  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(nColumnsProp, (int)raster->getNumberOfColumns());
256  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(nBandsProp, (int)raster->getNumberOfBands());
257  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setValue(nResXProp, raster->getResolutionX());
258  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setValue(nResYProp, raster->getResolutionY());
259  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(nMultiResProp, (int)raster->getMultiResLevelsCount());
260 
261 
262  if(raster->getAccessPolicy() == te::common::NoAccess)
263  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nAccessProp, tr("No Access"));
264  else if(raster->getAccessPolicy() == te::common::RAccess)
265  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nAccessProp, tr("Read Only Access"));
266  else if(raster->getAccessPolicy() == te::common::WAccess)
267  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nAccessProp, tr("Write Only Access"));
268  else if(raster->getAccessPolicy() == te::common::RWAccess)
269  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nAccessProp, tr("Read and Write Access"));
270 
271  //set information for each band
272  for(std::size_t t = 0; t < raster->getNumberOfBands(); ++t)
273  {
274  //get band property
275  te::rst::Band* band = raster->getBand(t);
276 
277  //create band top property
278  QtProperty* bandProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Band ") + QString::number(t));
279 
280  //create band properties
281  QtProperty* descriptionProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Description"));
282  QtProperty* dataTypeProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Data Type"));
283  QtProperty* dummyValueProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->addProperty(tr("Dummy Value"));
284  QtProperty* colorInterpProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Color Interpretation"));
285  QtProperty* palleteInterpProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Pallete Interpretation"));
286 
287  //add band properties to band top property
288  bandProp->addSubProperty(descriptionProp);
289  bandProp->addSubProperty(dataTypeProp);
290  bandProp->addSubProperty(dummyValueProp);
291  bandProp->addSubProperty(colorInterpProp);
292  bandProp->addSubProperty(palleteInterpProp);
293 
294  //set the band properties state
295  descriptionProp->setEnabled(false);
296  dataTypeProp->setEnabled(false);
297  dummyValueProp->setEnabled(false);
298  colorInterpProp->setEnabled(false);
299  palleteInterpProp->setEnabled(false);
300 
301  //set the band properties values
302  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(descriptionProp, band->getProperty()->m_description.c_str());
303  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(dataTypeProp, te::dt::ConvertDataTypeToString(band->getProperty()->getType()).c_str());
304  te::qt::widgets::AbstractPropertyManager::getInstance().m_doubleManager->setValue(dummyValueProp, band->getProperty()->m_noDataValue);
307 
308  //add block information
309  QtProperty* blockProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Block properties"));
310 
311  QtProperty* nBlockXProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Number of blocks in X"));
312  QtProperty* nBlockYProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Number of blocks in Y"));
313  QtProperty* blockWProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Block Width (pixels)"));
314  QtProperty* blockHProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->addProperty(tr("Block Height (pixels)"));
315 
316  blockProp->addSubProperty(nBlockXProp);
317  blockProp->addSubProperty(nBlockYProp);
318  blockProp->addSubProperty(blockWProp);
319  blockProp->addSubProperty(blockHProp);
320 
321  nBlockXProp->setEnabled(false);
322  nBlockYProp->setEnabled(false);
323  blockWProp->setEnabled(false);
324  blockHProp->setEnabled(false);
325 
326  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(nBlockXProp, band->getProperty()->m_nblocksx);
327  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(nBlockYProp, band->getProperty()->m_nblocksy);
328  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(blockWProp, band->getProperty()->m_blkw);
329  te::qt::widgets::AbstractPropertyManager::getInstance().m_intManager->setValue(blockHProp, band->getProperty()->m_blkh);
330 
331  bandProp->addSubProperty(blockProp);
332 
333  //get category names
334  if(!band->getProperty()->m_categoryNames.empty())
335  {
336  QtProperty* categProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Name of categories"));
337 
338  //create a property for each category name
339  for(std::size_t c = 0; c < band->getProperty()->m_categoryNames.size(); ++c)
340  {
341  QtProperty* cNameProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Category ") + QString::number(c));
342 
343  categProp->addSubProperty(cNameProp);
344 
345  cNameProp->setEnabled(false);
346 
347  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(cNameProp, band->getProperty()->m_categoryNames[c].c_str());
348  }
349 
350  bandProp->addSubProperty(categProp);
351  }
352 
353  //get metadata
354  if(!band->getProperty()->m_metadata.empty())
355  {
356  QtProperty* metaProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Metadata"));
357 
358  //create a property for each metadata name
359  for(std::size_t c = 0; c < band->getProperty()->m_metadata.size(); ++c)
360  {
361  QtProperty* metaItemProp =
362  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(
363  QString::fromStdString( band->getProperty()->m_metadata[ c ].first ) );
364 
365  metaProp->addSubProperty(metaItemProp);
366 
367  metaItemProp->setEnabled(false);
368 
369  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(
370  metaItemProp, QString::fromStdString(
371  band->getProperty()->m_metadata[ c ].second) );
372  }
373 
374  bandProp->addSubProperty(metaProp);
375  }
376 
377  //add band top property
378  m_rasterInfoProp->addSubProperty(bandProp);
379  }
380 
381  //add top property to tree
382  addProperty(m_rasterInfoProp, tr("Raster properties"), QColor(255, 255, 175));
383 }
384 
386 {
387  std::unique_ptr<te::da::DataSetType> dsType = vecLayer->getSchema();
388 
389  //create top property
390  QtProperty* vecInfoProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Data properties"));
391 
392  //add properties
393  QtProperty* titleProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Title"));
394 
395  //add properties to parent property
396  vecInfoProp->addSubProperty(titleProp);
397 
398  //set the property state
399  titleProp->setEnabled(false);
400 
401  //set properties values
402  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(titleProp, dsType->getTitle().c_str());
403 
404  //get all properties
405  std::vector<te::dt::Property*> vecProps = dsType->getProperties();
406 
407  for (std::size_t t = 0; t < vecProps.size(); ++t)
408  {
409  //get property
410  te::dt::Property* propItem = vecProps[t];
411 
412  //create top property
413  QtProperty* propProperty = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Property ") + QString::number(t));
414 
415  //create prop n properties
416  QtProperty* nameProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Name"));
417  QtProperty* dataTypeProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Data Type"));
418 
419  //add properties to top property
420  propProperty->addSubProperty(nameProp);
421  propProperty->addSubProperty(dataTypeProp);
422 
423  //set the properties state
424  nameProp->setEnabled(false);
425  dataTypeProp->setEnabled(false);
426 
427  //set the properties values
428  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nameProp, propItem->getName().c_str());
429  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(dataTypeProp, te::dt::ConvertDataTypeToString(propItem->getType()).c_str());
430 
431  //add prop to top property
432  vecInfoProp->addSubProperty(propProperty);
433  }
434 
435  //get primary key
436  te::da::PrimaryKey* pk = dsType->getPrimaryKey();
437 
438  if (pk)
439  {
440  QtProperty* pkProperty = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Primary Key"));
441 
442  //create prop n properties
443  QtProperty* nameProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Name"));
444 
445  //add properties to top property
446  pkProperty->addSubProperty(nameProp);
447 
448  //set the properties state
449  nameProp->setEnabled(false);
450 
451  //set the properties values
452  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nameProp, pk->getName().c_str());
453 
454  //get all properties
455  std::vector<te::dt::Property*> vecProps = pk->getProperties();
456 
457  for (std::size_t t = 0; t < vecProps.size(); ++t)
458  {
459  //get property
460  te::dt::Property* propItem = vecProps[t];
461 
462  //create top property
463  QtProperty* propProperty = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("PK Property ") + QString::number(t));
464 
465  //create prop n properties
466  QtProperty* nameProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Name"));
467  QtProperty* dataTypeProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Data Type"));
468 
469  //add properties to top property
470  propProperty->addSubProperty(nameProp);
471  propProperty->addSubProperty(dataTypeProp);
472 
473  //set the properties state
474  nameProp->setEnabled(false);
475  dataTypeProp->setEnabled(false);
476 
477  //set the properties values
478  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nameProp, propItem->getName().c_str());
479  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(dataTypeProp, te::dt::ConvertDataTypeToString(propItem->getType()).c_str());
480 
481  //add prop to top property
482  pkProperty->addSubProperty(propProperty);
483  }
484 
485  //add prop to top property
486  vecInfoProp->addSubProperty(pkProperty);
487  }
488 
489  te::gm::GeometryProperty* geomProp = te::da::GetFirstGeomProperty(dsType.get());
490 
491  if (geomProp)
492  {
493  QtProperty* geomProperty = te::qt::widgets::AbstractPropertyManager::getInstance().m_groupManager->addProperty(tr("Geometry Property"));
494 
495  //create prop n properties
496  QtProperty* nameProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Name"));
497  QtProperty* geomTypeProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("Geometry Type"));
498  QtProperty* sridProp = te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->addProperty(tr("SRID"));
499 
500  //add properties to top property
501  geomProperty->addSubProperty(nameProp);
502  geomProperty->addSubProperty(geomTypeProp);
503  geomProperty->addSubProperty(sridProp);
504 
505  //set the properties state
506  nameProp->setEnabled(false);
507  geomTypeProp->setEnabled(false);
508  sridProp->setEnabled(false);
509 
510  //set the properties values
511  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(nameProp, geomProp->getName().c_str());
512  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(geomTypeProp, te::gm::Geometry::getGeomTypeString(geomProp->getGeometryType()).c_str());
513 
514  QString sridStr = QString::number(geomProp->getSRID());
515  sridStr += QObject::tr(" - ");
516  sridStr += QString(te::srs::SpatialReferenceSystemManager::getInstance().getName(geomProp->getSRID()).c_str());
517  te::qt::widgets::AbstractPropertyManager::getInstance().m_stringManager->setValue(sridProp, sridStr);
518 
519  //add prop to top property
520  vecInfoProp->addSubProperty(geomProperty);
521  }
522 
523  //add top property to tree
524  addProperty(vecInfoProp, tr("Data properties"), QColor(255, 255, 175));
525 }
TEDATAACCESSEXPORT DataSourcePtr GetDataSource(const std::string &datasourceId, const bool opened=true)
Search for a data source with the informed id in the DataSourceManager.
TEDATATYPEEXPORT std::string ConvertDataTypeToString(const int &dataType)
Function used to convert from a int (Data Type Enum) to a string.
virtual const std::string & getId() const
It returns the layer id.
unsigned int band
std::string path() const
Retrieving the path.
Definition: URI.cpp:118
Geometric property.
A widget used to define the main property items that can be used to describe a se object...
std::string scheme() const
Retrieving the scheme.
Definition: URI.cpp:93
This is the base class for layers.
Definition: AbstractLayer.h:77
virtual const te::gm::Envelope & getExtent() const
It returns the Layer extent (or minimum bounding box).
boost::shared_ptr< DataSource > DataSourcePtr
std::vector< std::string > m_categoryNames
Set of categoric names for the values contained in a dimension.
Definition: BandProperty.h:139
virtual const std::string & getTitle() const
It returns the layer title.
void setLayerVecProperties(te::map::AbstractLayer *vecLayer)
int m_nblocksx
The number of blocks in x.
Definition: BandProperty.h:145
int m_nblocksy
The number of blocks in y.
Definition: BandProperty.h:146
const double & getUpperRightX() const
It returns a constant refernce to the x coordinate of the upper right corner.
const double & getLowerLeftY() const
It returns a constant refernce to the y coordinate of the lower left corner.
LayerPropertiesInfo(QtTreePropertyBrowser *pb, te::map::AbstractLayer *layer)
Constructor.
virtual Visibility getVisibility() const
It returns the layer visibility.
double m_noDataValue
Value to indicate elements where there is no data, default is std::numeric_limits<double>::max().
Definition: BandProperty.h:136
const double & getUpperRightY() const
It returns a constant refernce to the x coordinate of the upper right corner.
TERASTEREXPORT std::string ConvertColorInterpTypeToString(const te::rst::ColorInterp &ci)
Function used to convert from a Color Interp Enum to a string.
It models a property definition.
Definition: Property.h:59
virtual void valueChanged(QtProperty *p, int value)
const std::vector< te::dt::Property * > & getProperties() const
It returns the properties that take part of the primary key.
Definition: PrimaryKey.h:109
int getSRID() const
It returns the spatial reference system identifier associated to this property.
std::vector< std::pair< std::string, std::string > > m_metadata
A list of metadata where each element consists of a (key, value).
Definition: BandProperty.h:135
static AbstractPropertyManager & getInstance()
It returns a reference to the singleton instance.
BandProperty * getProperty()
Returns the band property.
virtual std::unique_ptr< LayerSchema > getSchema() const =0
It returns the layer schema.
URI C++ Library.
Definition: Attributes.h:37
int m_blkw
Block width (pixels).
Definition: BandProperty.h:143
GeomType getGeometryType() const
It returns the geometry subtype allowed for the property.
std::string port() const
Retrieving the port.
Definition: URI.cpp:113
std::string host() const
Retrieving the host.
Definition: URI.cpp:108
te::gm::Polygon * p
A raster band description.
void addProperty(QtProperty *property, const QString &id, QColor c)
A class for representing an Uniform Resource Identifier (URI).
Definition: URI.h:49
int getType() const
It returns the property data type.
Definition: Property.h:161
boost::shared_ptr< UnitOfMeasure > UnitOfMeasurePtr
const std::string & getDataSetName() const
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 setLayerRasterProperties(te::map::AbstractLayer *rasterLayer)
It describes a primary key (pk) constraint.
Definition: PrimaryKey.h:52
TERASTEREXPORT std::string ConvertPalleteInterpTypeToString(const te::rst::PaletteInterpretation &pi)
Function used to convert from a Pallete Interp Enum to a string.
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.
virtual ~LayerPropertiesInfo()
Destructor.
virtual int getSRID() const
It returns the Spatial Reference System ID associated to the Layer.
int getType() const
It returns the data type of the elements in the band.
Definition: BandProperty.h:113
std::string m_description
A description.
Definition: BandProperty.h:134
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
int m_blkh
Block height (pixels).
Definition: BandProperty.h:144
static std::string getGeomTypeString(const int &gId)
It returns the TerraLib geometry type string given a type id.
virtual const std::string & getName() const
It returns the constraint name.
Definition: Constraint.h:119
TEDATAACCESSEXPORT te::gm::GeometryProperty * GetFirstGeomProperty(const DataSetType *dt)
ColorInterp m_colorInterp
The color interpretation.
Definition: BandProperty.h:140
virtual const std::string & getDataSourceId() const
std::string user() const
Retrieving the user information.
Definition: URI.cpp:98
PaletteInterpretation m_paletteInterp
Pallete interpretation.
Definition: BandProperty.h:141
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
const std::string & getName() const
It returns the property name.
Definition: Property.h:127