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>
57 this->setWizardStyle(QWizard::ModernStyle);
58 this->setWindowTitle(tr(
"Segmenter"));
61 this->setOption(QWizard::HaveHelpButton,
true);
62 this->setOption(QWizard::HelpButtonOnRight,
false);
66 this->setButton(QWizard::HelpButton, helpButton);
80 if(currentPage() == m_layerSearchPage.get())
82 std::list<te::map::AbstractLayerPtr> list = m_layerSearchPage->getSearchWidget()->getSelecteds();
84 if(list.empty() ==
false)
88 m_segmenterPage->set(l);
91 return m_layerSearchPage->isComplete();
93 else if(currentPage() == m_segmenterPage.get())
95 bool res = m_segmenterPage->isComplete();
98 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Select at least one band."));
102 else if(currentPage() == m_rasterInfoPage.get())
112 m_layerSearchPage->getSearchWidget()->setList(layerList);
113 m_layerSearchPage->getSearchWidget()->filterOnlyByRaster();
118 removePage(m_layerSearchId);
120 m_segmenterPage->set(layer);
125 return m_outputLayer;
135 m_layerSearchId = addPage(m_layerSearchPage.get());
136 addPage(m_segmenterPage.get());
137 addPage(m_segmenterAdvOptPage.get());
138 addPage(m_rasterInfoPage.get());
141 m_layerSearchPage->getSearchWidget()->enableMultiSelection(
false);
146 if(m_rasterInfoPage->getWidget()->fileExists())
148 QMessageBox::warning(
this, tr(
"Segmenter"), tr(
"File already exists."));
154 std::auto_ptr<te::da::DataSet> ds(l->getData());
162 algoInputParams.
m_enableThreadedProcessing = m_segmenterAdvOptPage->getForm()->m_enableThreadedProcessingcheckBox->isChecked();
163 algoInputParams.
m_maxSegThreads = m_segmenterAdvOptPage->getForm()->m_maximumThreadsNumberLineEdit->text().toUInt();
164 algoInputParams.
m_enableBlockProcessing = m_segmenterAdvOptPage->getForm()->m_enableBlockProcessingcheckBox->isChecked();
165 algoInputParams.
m_enableBlockMerging = m_segmenterAdvOptPage->getForm()->m_enableBlockMergingCheckBox->isChecked();
166 algoInputParams.
m_maxBlockSize = m_segmenterAdvOptPage->getForm()->m_maximumBlockSizeLineEdit->text().toUInt();
169 algoOutputParams.
m_rType = m_rasterInfoPage->getWidget()->getType();
170 algoOutputParams.
m_rInfo = m_rasterInfoPage->getWidget()->getInfo();
176 QApplication::setOverrideCursor(Qt::WaitCursor);
180 if(algorithmInstance.initialize(algoInputParams))
182 if(algorithmInstance.execute(algoOutputParams))
184 algoOutputParams.
reset();
188 m_rasterInfoPage->getWidget()->getInfo());
190 QMessageBox::information(
this, tr(
"Segmenter"), tr(
"Segmenter ended sucessfully"));
194 QMessageBox::critical(
this, tr(
"Segmenter"), tr(
"Segmenter execution error"));
198 QApplication::restoreOverrideCursor();
205 QMessageBox::critical(
this, tr(
"Segmenter"), tr(
"Segmenter initialization error") +
210 QApplication::restoreOverrideCursor();
215 catch(
const std::exception& e)
217 QMessageBox::warning(
this, tr(
"Segmenter"), e.what());
221 QApplication::restoreOverrideCursor();
227 QMessageBox::warning(
this, tr(
"Segmenter"), tr(
"An exception has occurred!"));
231 QApplication::restoreOverrideCursor();
238 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