27 #include "../../../common/progress/ProgressManager.h"
28 #include "../../../dataaccess/dataset/DataSet.h"
29 #include "../../../dataaccess/dataset/DataSetType.h"
30 #include "../../../dataaccess/utils/Utils.h"
31 #include "../../../rp/Filter.h"
32 #include "../../../rp/Module.h"
33 #include "../canvas/MapDisplay.h"
34 #include "../progress/ProgressViewerDialog.h"
39 #include "ui_FilterWizardPageForm.h"
42 #include <QApplication>
43 #include <QGridLayout>
44 #include <QMessageBox>
47 #include <boost/lexical_cast.hpp>
50 : QWizardPage(parent),
51 m_ui(new Ui::FilterWizardPageForm)
57 this->setTitle(tr(
"Filter"));
58 this->setSubTitle(tr(
"Select the type of filter and set their specific parameters."));
60 m_ui->m_maskToolButton->setIcon(QIcon::fromTheme(
"mask"));
61 m_ui->m_loadMaskToolButton->setIcon(QIcon::fromTheme(
"mask-fill"));
62 m_ui->m_maskDefaultValueLineEdit->setValidator(
new QDoubleValidator(
this));
65 QGridLayout* displayLayout =
new QGridLayout(
m_ui->m_previewWidget);
70 displayLayout->setContentsMargins(0,0,0,0);
73 connect(
m_ui->m_listWidget, SIGNAL(itemSelectionChanged()),
this, SIGNAL(completeChanged()));
88 if(m_ui->m_listWidget->selectedItems().isEmpty())
98 m_navigator->set(m_layer,
true);
100 m_navigator->getDisplay()->refresh();
107 int idx = m_ui->m_typeComboBox->currentIndex();
116 algoInputParams.
m_windowH = m_window.size1();
117 algoInputParams.
m_windowW = m_window.size2();
118 algoInputParams.
m_window = m_window;
121 int nBands = m_ui->m_listWidget->count();
122 for(
int i = 0; i < nBands; ++i)
124 if(m_ui->m_listWidget->item(i)->isSelected())
128 return algoInputParams;
135 return algoOutputParams;
140 int filterType = m_ui->m_typeComboBox->itemData(index).toInt();
144 m_ui->m_maskSizeSpinBox->setEnabled(flag);
145 m_ui->m_maskToolButton->setEnabled(flag);
146 m_ui->m_maskDefaultValueLineEdit->setEnabled(flag);
153 dlg.
setMaskSize(m_ui->m_maskSizeSpinBox->value(), m_ui->m_maskSizeSpinBox->value(),
154 m_ui->m_maskDefaultValueLineEdit->text().isEmpty() ? 0 : m_ui->m_maskDefaultValueLineEdit->text().toDouble());
156 if(dlg.exec() == QDialog::Accepted)
160 m_ui->m_loadMaskToolButton->setEnabled(
true);
170 m_ui->m_maskSizeSpinBox->setValue(m_window.size1());
172 if(dlg.exec() == QDialog::Accepted)
180 if(m_ui->m_listWidget->selectedItems().isEmpty())
182 QMessageBox::warning(
this, tr(
"Warning"), tr(
"No band was selected."));
186 QApplication::setOverrideCursor(Qt::WaitCursor);
198 std::map<std::string, std::string> rinfo;
199 rinfo[
"MEM_RASTER_NROWS"] = boost::lexical_cast<std::string>(inputRst->
getNumberOfRows());
200 rinfo[
"MEM_RASTER_NCOLS"] = boost::lexical_cast<std::string>(inputRst->
getNumberOfColumns());
201 rinfo[
"MEM_RASTER_DATATYPE"] = boost::lexical_cast<std::string>(inputRst->
getBandDataType(0));
202 rinfo[
"MEM_RASTER_NBANDS"] = boost::lexical_cast<std::string>(inputRst->
getNumberOfBands());
204 algoOutputParams.
m_rType =
"MEM";
205 algoOutputParams.
m_rInfo = rinfo;
212 if(algorithmInstance.
initialize(algoInputParams))
214 if(algorithmInstance.
execute(algoOutputParams))
218 m_navigator->drawRaster(rst.get());
224 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Filter error."));
227 QApplication::restoreOverrideCursor();
235 m_ui->m_listWidget->clear();
238 std::auto_ptr<te::da::DataSet> ds = m_layer->getData();
244 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
248 for(
unsigned int i = 0; i < inputRst->getNumberOfBands(); ++i)
250 m_ui->m_listWidget->addItem(QString::number(i));
258 m_ui->m_typeComboBox->clear();
269 onFilterTypeComboBoxActivated(0);
Utility functions for the data access module.
FilterWizardPage(QWidget *parent=0)
void onMaskToolButtonClicked()
unsigned int getNumberOfColumns() const
Returns the raster number of columns.
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
std::auto_ptr< Ui::FilterWizardPageForm > m_ui
std::map< std::string, std::string > m_rInfo
The necessary information to create the raster (as described in te::raster::RasterFactory).
An abstract class for raster data strucutures.
void onFilterTypeComboBoxActivated(int index)
unsigned int getNumberOfRows() const
Returns the raster number of rows.
virtual std::size_t getNumberOfBands() const =0
Returns the number of bands (dimension of cells attribute values) in the raster.
te::rp::Filter::OutputParameters getOutputParams()
This file defines a class for a MaskDialog.
A series of well-known filtering algorithms for images, linear and non-linear..
void onLoadMaskToolButtonClicked()
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.
std::auto_ptr< RasterNavigatorWidget > m_navigator
te::rp::Filter::InputParameters getInputParams()
std::auto_ptr< te::rst::Raster > m_outputRasterPtr
A pointer the ge generated output raster (label image).
void set(te::map::AbstractLayerPtr layer)
This method is used to set the selected layer for mixture model operation.
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
Filter output parameters.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
virtual int getBandDataType(std::size_t i) const =0
Returns the data type in a particular band (or dimension).
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters.
This file has the FilterWizardPage class.