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.