27 #include "../../../common/progress/ProgressManager.h"
28 #include "../../../dataaccess/dataset/DataSet.h"
29 #include "../../../dataaccess/utils/Utils.h"
30 #include "../../../raster/Grid.h"
31 #include "../../../raster/Raster.h"
32 #include "../../../rp/Register.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"
51 #include <QApplication>
52 #include <QMessageBox>
59 this->setWizardStyle(QWizard::ModernStyle);
60 this->setWindowTitle(tr(
"Register"));
63 this->setOption(QWizard::HaveHelpButton,
true);
64 this->setOption(QWizard::HelpButtonOnRight,
false);
68 this->setButton(QWizard::HelpButton, helpButton);
82 if(currentPage() == m_layerRefPage.get())
84 std::list<te::map::AbstractLayerPtr> list = m_layerRefPage->getSearchWidget()->getSelecteds();
86 if(list.empty() ==
false)
88 m_refLayer = *list.begin();
90 m_tiePointLocatorDialog->setReferenceLayer(m_refLayer);
93 return m_layerRefPage->isComplete();
95 else if(currentPage() == m_layerAdjPage.get())
97 std::list<te::map::AbstractLayerPtr> list = m_layerAdjPage->getSearchWidget()->getSelecteds();
99 if(list.empty() ==
false)
101 m_adjLayer = *list.begin();
103 m_tiePointLocatorDialog->setAdjustLayer(m_adjLayer);
106 m_tiePointLocatorDialog->showMaximized();
108 return m_layerAdjPage->isComplete();
110 else if(currentPage() == m_rasterInfoPage.get())
112 std::vector< te::gm::GTParameters::TiePoint > tiePoints;
114 m_tiePointLocatorDialog->getWidget()->getTiePoints(tiePoints);
116 if(tiePoints.empty())
118 QMessageBox::warning(
this, tr(
"Register"), tr(
"Tie Points not aquired."));
130 m_layerRefPage->getSearchWidget()->setList(layerList);
131 m_layerAdjPage->getSearchWidget()->setList(layerList);
133 m_layerRefPage->getSearchWidget()->filterOnlyByRaster();
134 m_layerAdjPage->getSearchWidget()->filterOnlyByRaster();
139 return m_outputLayer;
149 addPage(m_layerRefPage.get());
150 addPage(m_layerAdjPage.get());
151 addPage(m_rasterInfoPage.get());
154 m_layerRefPage->setSubTitle(tr(
"Allows selection of layers using filters for selection. Select the layer to be used as REFERENCE."));
155 m_layerRefPage->getSearchWidget()->enableMultiSelection(
false);
156 m_layerAdjPage->setSubTitle(tr(
"Allows selection of layers using filters for selection. Select the layer to be used as ADJUST."));
157 m_layerAdjPage->getSearchWidget()->enableMultiSelection(
false);
162 if(m_rasterInfoPage->getWidget()->fileExists())
164 QMessageBox::warning(
this, tr(
"Register"), tr(
"File already exists."));
169 std::auto_ptr<te::da::DataSet> ds(m_adjLayer->getData());
171 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
173 std::vector<unsigned int> vec;
174 for(
size_t t = 0; t < inputRst->getNumberOfBands(); ++t)
176 vec.push_back((
unsigned int)t);
179 std::vector< te::gm::GTParameters::TiePoint > tiePoints;
180 m_tiePointLocatorDialog->getWidget()->getTiePoints(tiePoints);
183 m_tiePointLocatorDialog->getWidget()->getOutputSRID(srid);
186 m_tiePointLocatorDialog->getWidget()->getOutputResolution(resX, resY);
199 algoOutputParams.
m_rType = m_rasterInfoPage->getWidget()->getType();
200 algoOutputParams.
m_rInfo = m_rasterInfoPage->getWidget()->getInfo();
207 QApplication::setOverrideCursor(Qt::WaitCursor);
213 if(!algorithmInstance.
initialize(algoInputParams))
215 QMessageBox::warning(
this, tr(
"Register"), tr(
"Algorithm initialization error.") +
220 QApplication::restoreOverrideCursor();
225 if(!algorithmInstance.
execute(algoOutputParams))
227 QMessageBox::warning(
this, tr(
"Register"), tr(
"Register Error.") +
232 QApplication::restoreOverrideCursor();
238 QMessageBox::warning(
this, tr(
"Register"), tr(
"Register Done!"));
240 algoOutputParams.
reset();
244 m_rasterInfoPage->getWidget()->getInfo());
247 catch(
const std::exception& e)
249 QMessageBox::warning(
this, tr(
"Register"), e.what());
253 QApplication::restoreOverrideCursor();
259 QMessageBox::warning(
this, tr(
"Register"), tr(
"An exception has occurred!"));
263 QApplication::restoreOverrideCursor();
270 QApplication::restoreOverrideCursor();
Utility functions for the data access module.
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters.
This file defines the RegisterWizard class.
This file defines a class for a Raster Info Wizard page.
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.
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 raster info parameters for raster factory.
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
int addViewer(AbstractProgressViewer *apv)
Attach a progress viewer.
Performs raster data registering into a SRS using a set of tie points.
Register output parameters.
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state...