All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ScatterDataWidget.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/charts/scatterDataWidget.cpp
22 
23  \brief A widget used to adjust a scatter's input data.
24 */
25 
26 //Terralib
27 
28 #include "../../../dataaccess.h"
29 #include "../../../datatype/Property.h"
30 #include "../../../qt/widgets/charts/Utils.h"
31 #include "../../../raster.h"
32 #include "../../../statistics/core/Enums.h"
33 #include "../../../statistics/core/Utils.h"
34 #include "ScatterDataWidget.h"
35 #include "ui_ScatterDataWidgetForm.h"
36 
37 void updateSummary(te::da::DataSet* dataSet, Ui::ScatterDataWidgetForm* ui)
38 {
39  ui->m_summaryComboBox->clear();
40 
41  ui->m_summaryComboBox->addItem(QString::fromStdString("None"), QVariant(-1));
42  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::MIN_VALUE).c_str()), QVariant(te::stat::MIN_VALUE));
43  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::MAX_VALUE).c_str()), QVariant(te::stat::MAX_VALUE));
44  //ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::COUNT).c_str()), QVariant(te::stat::COUNT));
45  //ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::VALID_COUNT).c_str()), QVariant(te::stat::VALID_COUNT));
46  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::MEAN).c_str()), QVariant(te::stat::MEAN));
47  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::SUM).c_str()), QVariant(te::stat::SUM));
48  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::STANDARD_DEVIATION).c_str()), QVariant(te::stat::STANDARD_DEVIATION));
49  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::VARIANCE).c_str()), QVariant(te::stat::VARIANCE));
50  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::SKEWNESS).c_str()), QVariant(te::stat::SKEWNESS));
51  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::KURTOSIS).c_str()), QVariant(te::stat::KURTOSIS));
52  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::AMPLITUDE).c_str()), QVariant(te::stat::AMPLITUDE));
53  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::MEDIAN).c_str()), QVariant(te::stat::MEDIAN));
54  ui->m_summaryComboBox->addItem(QString(te::stat::GetStatSummaryFullName(te::stat::VAR_COEFF).c_str()), QVariant(te::stat::VAR_COEFF));
55 }
56 
57 te::qt::widgets::ScatterDataWidget::ScatterDataWidget(te::da::DataSet* dataSet, te::da::DataSetType* dataType, QWidget* parent, Qt::WindowFlags f)
58  : QWidget(parent, f),
59  m_ui(new Ui::ScatterDataWidgetForm),
60  m_dataSet (dataSet),
61  m_dataType(dataType)
62 {
63  m_ui->setupUi(this);
64 
65  QString item;
66 
67  std::size_t rpos = te::da::GetFirstPropertyPos(dataSet, te::dt::RASTER_TYPE);
68 
69  if(rpos != std::string::npos)
70  {
71  size_t size = dataSet->getRaster(rpos)->getNumberOfBands();
72  for (size_t i = 0; i < size; i++)
73  {
74  item = QString::number(i);
75  m_ui->m_propertyXComboBox->addItem(QString::fromStdString("Band: ") + item);
76  m_ui->m_propertyYComboBox->addItem(QString::fromStdString("Band: ") + item);
77  }
78  }
79  else
80  {
81  m_ui->m_readAllCheckBox->hide();
82  for (std::size_t i = 0; i < dataSet->getNumProperties(); i++)
83  {
85  {
86  item = QString::fromStdString(dataSet->getPropertyName(i));
87  m_ui->m_propertyXComboBox->addItem(item);
88  m_ui->m_propertyYComboBox->addItem(item);
89  }
90  }
91  }
92 
94 
95  if(te::da::HasLinkedTable(dataType))
96  {
97  m_ui->m_summaryComboBox->show();
98  m_ui->m_summaryLabel->show();
99  }
100  else
101  {
102  m_ui->m_summaryComboBox->hide();
103  m_ui->m_summaryLabel->hide();
104  }
105 }
106 
108 {
109  return m_ui.get();
110 }
111 
113 {
114  //Acquiring the dataset Properties types and creating a new scatter
115  std::size_t rpos = te::da::GetFirstPropertyPos(m_dataSet.get(), te::dt::RASTER_TYPE);
116  int stat = m_ui->m_summaryComboBox->itemData(m_ui->m_summaryComboBox->currentIndex()).toInt();
117 
118  if(rpos != std::string::npos)
119  return te::qt::widgets::createScatter(m_dataSet.get(), m_dataType.get(), m_ui->m_propertyXComboBox->currentIndex(), m_ui->m_propertyYComboBox->currentIndex(), stat, m_ui->m_readAllCheckBox->isChecked());
120  else
121  {
122 
123  return te::qt::widgets::createScatter(m_dataSet.get(), m_dataType.get(),
124  te::da::GetPropertyPos(m_dataSet.get(), m_ui->m_propertyXComboBox->currentText().toStdString()),
125  te::da::GetPropertyPos(m_dataSet.get(), m_ui->m_propertyYComboBox->currentText().toStdString()), stat);
126  }
127 
128 }
129 
131 {
132 }
TEQTWIDGETSEXPORT Scatter * createScatter(te::da::DataSet *dataset, te::da::DataSetType *dataType, int propX, int propY, int stat, bool readall=true)
Scatter Creator.
Definition: Utils.cpp:601
void updateSummary(te::da::DataSet *dataSet, Ui::ScatterDataWidgetForm *ui)
Mean.
Definition: Enums.h:43
Skewness.
Definition: Enums.h:49
std::auto_ptr< Ui::ScatterDataWidgetForm > m_ui
THe widget Form.
A widget used to adjust a scatter's input data.
TEDATAACCESSEXPORT bool HasLinkedTable(te::da::DataSetType *type)
It checks if the datasettype has a linked table.
Definition: Utils.cpp:1175
te::qt::widgets::Scatter * getScatter()
Returns a pointer to the widget's form.
A class that models the description of a dataset.
Definition: DataSetType.h:72
Ui::ScatterDataWidgetForm * getForm()
Returns a pointer to the widget's form.
TEDATAACCESSEXPORT std::size_t GetPropertyPos(const DataSet *dataset, const std::string &name)
Definition: Utils.cpp:500
virtual std::auto_ptr< te::rst::Raster > getRaster(std::size_t i) const =0
Method for retrieving a raster attribute value.
Minimum value.
Definition: Enums.h:41
A class to represent a scatter.
Definition: Scatter.h:51
Median.
Definition: Enums.h:52
virtual std::string getPropertyName(std::size_t i) const =0
It returns the property name at position pos.
Kurtosis.
Definition: Enums.h:50
Standard deviation.
Definition: Enums.h:47
Sum of values.
Definition: Enums.h:44
TESTATEXPORT std::string GetStatSummaryFullName(const int &e)
Get the statistical parameter full name ffrom its enumerator.
Definition: Utils.cpp:88
virtual std::size_t getNumProperties() const =0
It returns the number of properties that composes an item of the dataset.
Coefficient variation.
Definition: Enums.h:53
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:112
std::auto_ptr< te::da::DataSet > m_dataSet
The dataset that will be used to generate the Scatter graphic.
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
Definition: Utils.cpp:481
virtual int getPropertyDataType(std::size_t i) const =0
It returns the underlying data type of the property at position pos.
Variance.
Definition: Enums.h:48
Maximum value.
Definition: Enums.h:42
ScatterDataWidget(te::da::DataSet *dataSet, te::da::DataSetType *dataType, QWidget *parent=0, Qt::WindowFlags f=0)
Constructor.
Amplitude.
Definition: Enums.h:51