27 #include "../../../common/progress/ProgressManager.h" 
   28 #include "../../../dataaccess/dataset/DataSet.h" 
   29 #include "../../../dataaccess/utils/Utils.h" 
   30 #include "../../../raster/Raster.h" 
   31 #include "../../../rp/Segmenter.h" 
   32 #include "../../../rp/SegmenterRegionGrowingStrategy.h" 
   33 #include "../../../rp/Module.h" 
   34 #include "../help/HelpPushButton.h" 
   35 #include "../layer/search/LayerSearchWidget.h" 
   36 #include "../layer/search/LayerSearchWizardPage.h" 
   37 #include "../progress/ProgressViewerDialog.h" 
   43 #include "ui_SegmenterAdvancedOptionsWizardPageForm.h" 
   50 #include <QMessageBox> 
   53 #include <boost/timer.hpp> 
   54 #include <boost/format.hpp> 
   61   this->setWizardStyle(QWizard::ModernStyle);
 
   62   this->setWindowTitle(tr(
"Segmenter"));
 
   65   this->setOption(QWizard::HaveHelpButton, 
true);
 
   66   this->setOption(QWizard::HelpButtonOnRight, 
false);
 
   70   this->setButton(QWizard::HelpButton, helpButton);
 
   84   if(currentPage() ==  m_layerSearchPage.get())
 
   86     std::list<te::map::AbstractLayerPtr> list = m_layerSearchPage->getSearchWidget()->getSelecteds();
 
   88     if(list.empty() == 
false)
 
   92       m_segmenterPage->set(l);
 
   95     return m_layerSearchPage->isComplete();
 
   97   else if(currentPage() ==  m_segmenterPage.get())
 
   99     bool res = m_segmenterPage->isComplete();
 
  102       QMessageBox::warning(
this, tr(
"Warning"), tr(
"Select at least one band."));
 
  106   else if(currentPage() ==  m_rasterInfoPage.get())
 
  116   m_layerSearchPage->getSearchWidget()->setList(layerList);
 
  117   m_layerSearchPage->getSearchWidget()->filterOnlyByRaster();
 
  122   removePage(m_layerSearchId);
 
  124   m_segmenterPage->set(layer);
 
  129   return m_outputLayer;
 
  139   m_layerSearchId = addPage(m_layerSearchPage.get());
 
  140   addPage(m_segmenterPage.get());
 
  141   addPage(m_segmenterAdvOptPage.get());
 
  142   addPage(m_rasterInfoPage.get());
 
  145   m_layerSearchPage->getSearchWidget()->enableMultiSelection(
false);
 
  150   if(m_rasterInfoPage->getWidget()->fileExists())
 
  152     QMessageBox::warning(
this, tr(
"Segmenter"), tr(
"File already exists."));
 
  158   std::auto_ptr<te::da::DataSet> ds(l->getData());
 
  166   algoInputParams.
m_enableThreadedProcessing = m_segmenterAdvOptPage->getForm()->m_enableThreadedProcessingcheckBox->isChecked();
 
  167   algoInputParams.
m_maxSegThreads = m_segmenterAdvOptPage->getForm()->m_maximumThreadsNumberLineEdit->text().toUInt();
 
  168   algoInputParams.
m_enableBlockProcessing = m_segmenterAdvOptPage->getForm()->m_enableBlockProcessingcheckBox->isChecked();
 
  169   algoInputParams.
m_maxBlockSize = m_segmenterAdvOptPage->getForm()->m_maximumBlockSizeLineEdit->text().toUInt();
 
  170   algoInputParams.
m_blocksOverlapPercent = m_segmenterAdvOptPage->getForm()->m_blockOverlapPercentSpinBox->value();
 
  173   algoOutputParams.
m_rType = m_rasterInfoPage->getWidget()->getType();
 
  174   algoOutputParams.
m_rInfo = m_rasterInfoPage->getWidget()->getInfo();
 
  180   QApplication::setOverrideCursor(Qt::WaitCursor);
 
  184     if(algorithmInstance.initialize(algoInputParams))
 
  188       if(algorithmInstance.execute(algoOutputParams))
 
  190         algoOutputParams.
reset();
 
  194                                                      m_rasterInfoPage->getWidget()->getInfo());
 
  195         std::string elapsedTimeStr = boost::str( boost::format( 
"%.2f" ) % timer.elapsed() );
 
  196         QMessageBox::information(
this, tr(
"Segmenter"), tr(
"Segmenter ended sucessfully") + ( 
" (" + elapsedTimeStr + 
" " ).c_str() + tr(
"seconds") + 
")" );
 
  200         QMessageBox::critical(
this, tr(
"Segmenter"), tr(
"Segmenter execution error"));
 
  204         QApplication::restoreOverrideCursor();
 
  211       QMessageBox::critical(
this, tr(
"Segmenter"), tr(
"Segmenter initialization error") +
 
  216       QApplication::restoreOverrideCursor();
 
  221   catch(
const std::exception& e)
 
  223     QMessageBox::warning(
this, tr(
"Segmenter"), e.what());
 
  227     QApplication::restoreOverrideCursor();
 
  233     QMessageBox::warning(
this, tr(
"Segmenter"), tr(
"An exception has occurred!"));
 
  237     QApplication::restoreOverrideCursor();
 
  244   QApplication::restoreOverrideCursor();
 
Utility functions for the data access module. 
 
Segmenter Output Parameters. 
 
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ). 
 
This file defines a class for a Segmenter Advanced Options Wizard page. 
 
This file defines a class for a Raster Info Wizard page. 
 
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state...
 
This class is GUI used to define the segmenter advanced options parameters for the RP constast operat...
 
static const std::string & getLastLogStr()
Returns the last log string generated by this module. 
 
void removeViewer(int viewerId)
Dettach a progress viewer. 
 
static ProgressManager & getInstance()
It returns a reference to the singleton instance. 
 
This class is GUI used to define the segmenter parameters for the RP constast operation. 
 
This class is GUI used to define the raster info parameters for raster factory. 
 
A Qt dialog that allows users to run a segmenter operation defined by RP module. 
 
int addViewer(AbstractProgressViewer *apv)
Attach a progress viewer. 
 
std::map< std::string, std::string > m_rInfo
The necessary information to create the raster (as described in te::raster::RasterFactory). 
 
This file defines a class for a Segmenter Wizard page. 
 
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr