FusionWizard.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/qt/widgets/rp/FusionWizard.cpp
22 
23  \brief A Qt dialog that allows users to run a fusion operation defined by RP module.
24 */
25 
26 // TerraLib
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 "../../../maptools/Utils.h"
32 #include "../../../rp/IHSFusion.h"
33 #include "../../../rp/Module.h"
34 #include "../../../rp/PCAFusion.h"
35 #include "../../../rp/WisperFusion.h"
36 #include "../help/HelpPushButton.h"
37 #include "../layer/search/LayerSearchWidget.h"
38 #include "../layer/search/LayerSearchWizardPage.h"
39 #include "../progress/ProgressViewerDialog.h"
40 #include "FusionWizard.h"
41 #include "FusionWizardPage.h"
42 #include "../raster/RasterInfoWidget.h"
43 #include "RasterInfoWizardPage.h"
44 #include "Utils.h"
45 
46 // STL
47 #include <cassert>
48 
49 // Qt
50 #include <QMessageBox>
51 #include <QApplication>
52 
53 
55  : QWizard(parent)
56 {
57  //configure the wizard
58  this->setWizardStyle(QWizard::ModernStyle);
59  this->setWindowTitle(tr("Fusion"));
60  //this->setFixedSize(640, 480);
61 
62  this->setOption(QWizard::HaveHelpButton, true);
63  this->setOption(QWizard::HelpButtonOnRight, false);
64 
66 
67  this->setButton(QWizard::HelpButton, helpButton);
68 
69  helpButton->setPageReference("plugins/rp/rp_fusion.html");
70 
71  connect(this, SIGNAL(currentIdChanged(int)), SLOT(onPageChanged(int)));
72 
73  addPages();
74 }
75 
77 
79 {
80  if(currentPage() == m_layerLowerSearchPage.get())
81  {
82  std::list<te::map::AbstractLayerPtr> list = m_layerLowerSearchPage->getSearchWidget()->getSelecteds();
83 
84  if(list.empty() == false)
85  {
86  te::map::AbstractLayerPtr l = *list.begin();
87 
88  m_fusionPage->setLower(l);
89  }
90 
91  return m_layerLowerSearchPage->isComplete();
92  }
93  else if(currentPage() == m_layerHigherSearchPage.get())
94  {
95  std::list<te::map::AbstractLayerPtr> list = m_layerHigherSearchPage->getSearchWidget()->getSelecteds();
96 
97  if(list.empty() == false)
98  {
99  te::map::AbstractLayerPtr l = *list.begin();
100 
101  m_fusionPage->setHigher(l);
102  }
103 
104  return m_layerHigherSearchPage->isComplete();
105  }
106  else if(currentPage() == m_fusionPage.get())
107  {
108  return m_fusionPage->isComplete();
109  }
110  else if(currentPage() == m_rasterInfoPage.get())
111  {
112  return execute();
113  }
114 
115  return true;
116 }
117 
118 void te::qt::widgets::FusionWizard::setList(std::list<te::map::AbstractLayerPtr>& layerList)
119 {
120  m_layerLowerSearchPage->getSearchWidget()->setList(layerList);
121  m_layerLowerSearchPage->getSearchWidget()->filterOnlyByRaster();
122 
123  m_layerHigherSearchPage->getSearchWidget()->setList(layerList);
124  m_layerHigherSearchPage->getSearchWidget()->filterOnlyByRaster();
125 }
126 
128 {
129  return m_outputLayer;
130 }
131 
133 {
138 
139  addPage(m_layerLowerSearchPage.get());
140  addPage(m_layerHigherSearchPage.get());
141  addPage(m_fusionPage.get());
142  addPage(m_rasterInfoPage.get());
143 
144  //for contrast only one layer can be selected
145  m_layerLowerSearchPage->setSubTitle(tr("Allows selection of layers using filters for selection. Select the layer with a LOWER raster resolution."));
146  m_layerLowerSearchPage->getSearchWidget()->enableMultiSelection(false);
147  m_layerHigherSearchPage->setSubTitle(tr("Allows selection of layers using filters for selection. Select the layer with a HIGHER raster resolution."));
148  m_layerHigherSearchPage->getSearchWidget()->enableMultiSelection(false);
149 }
150 
152 {
153  if(m_rasterInfoPage->getWidget()->fileExists())
154  {
155  QMessageBox::warning(this, tr("Fusion"), tr("File already exists."));
156  return false;
157  }
158 
159  if(m_fusionPage->isIHSFusion())
160  return executeIHS();
161 
162  if(m_fusionPage->isPCAFusion())
163  return executePCA();
164 
165  if(m_fusionPage->isWisperFusion())
166  return executeWisper();
167 
168  return false;
169 }
170 
172 {
173  //get layer lower
174  std::list<te::map::AbstractLayerPtr> listLower = m_layerLowerSearchPage->getSearchWidget()->getSelecteds();
175  te::map::AbstractLayerPtr lLower = *listLower.begin();
176 
177  te::rst::Raster* inputRstLower(te::map::GetRaster(lLower.get()));
178 
179  //get layer higher
180  std::list<te::map::AbstractLayerPtr> listHigher = m_layerHigherSearchPage->getSearchWidget()->getSelecteds();
181  te::map::AbstractLayerPtr lHigher = *listHigher.begin();
182 
183  te::rst::Raster* inputRstHigher(te::map::GetRaster(lHigher.get()));
184 
185  te::rst::Raster* rasterLower = nullptr;
186  te::rst::Raster* rasterHigher = nullptr;
187 
188  adjustRasters(inputRstLower, inputRstHigher, rasterLower, rasterHigher);
189 
190  //run IHS Fusion
191  te::rp::IHSFusion algorithmInstance;
192 
193  te::rp::IHSFusion::InputParameters algoInputParams = m_fusionPage->getInputIHSParams();
194  algoInputParams.m_lowResRasterPtr = rasterLower;
195  algoInputParams.m_highResRasterPtr = rasterHigher;
196 
197  te::rp::IHSFusion::OutputParameters algoOutputParams = m_fusionPage->getOutputIHSParams();
198  algoOutputParams.m_rInfo = m_rasterInfoPage->getWidget()->getInfo();
199  algoOutputParams.m_rType = m_rasterInfoPage->getWidget()->getType();
200 
201  //progress
203 
204  QApplication::setOverrideCursor(Qt::WaitCursor);
205 
206  try
207  {
208  if(algorithmInstance.initialize(algoInputParams))
209  {
210  if(algorithmInstance.execute(algoOutputParams))
211  {
212  algoOutputParams.reset();
213 
214  //set output layer
216  m_rasterInfoPage->getWidget()->getInfo());
217 
218  QMessageBox::information(this, tr("Fusion"), tr("Fusion ended sucessfully"));
219  }
220  else
221  {
222  QMessageBox::critical(this, tr("Fusion"), tr("Fusion execution error.") +
223  ( " " + algorithmInstance.getErrorMessage() ).c_str());
224 
225  QApplication::restoreOverrideCursor();
226 
227  delete rasterLower;
228  delete rasterHigher;
229 
230  return false;
231  }
232  }
233  else
234  {
235  QMessageBox::critical(this, tr("Fusion"), tr("Fusion initialization error.") +
236  ( " " + algorithmInstance.getErrorMessage() ).c_str() );
237 
238  QApplication::restoreOverrideCursor();
239 
240  delete rasterLower;
241  delete rasterHigher;
242 
243  return false;
244  }
245  }
246  catch(const std::exception& e)
247  {
248  QMessageBox::warning(this, tr("Fusion"), e.what());
249 
250  QApplication::restoreOverrideCursor();
251 
252  delete rasterLower;
253  delete rasterHigher;
254 
255  return false;
256  }
257  catch(...)
258  {
259  QMessageBox::warning(this, tr("Fusion"), tr("An exception has occurred!"));
260 
261  QApplication::restoreOverrideCursor();
262 
263  delete rasterLower;
264  delete rasterHigher;
265 
266  return false;
267  }
268 
269  QApplication::restoreOverrideCursor();
270 
272 
273  delete rasterLower;
274  delete rasterHigher;
275 
276  return true;
277 }
278 
280 {
281 //get layer lower
282  std::list<te::map::AbstractLayerPtr> listLower = m_layerLowerSearchPage->getSearchWidget()->getSelecteds();
283  te::map::AbstractLayerPtr lLower = *listLower.begin();
284 
285  te::rst::Raster* inputRstLower(te::map::GetRaster(lLower.get()));
286 
287  //get layer higher
288  std::list<te::map::AbstractLayerPtr> listHigher = m_layerHigherSearchPage->getSearchWidget()->getSelecteds();
289  te::map::AbstractLayerPtr lHigher = *listHigher.begin();
290 
291  te::rst::Raster* inputRstHigher(te::map::GetRaster(lHigher.get()));
292 
293  te::rst::Raster* rasterLower = nullptr;
294  te::rst::Raster* rasterHigher = nullptr;
295 
296  adjustRasters(inputRstLower, inputRstHigher, rasterLower, rasterHigher);
297 
298 
299  //run PCA Fusion
300  te::rp::PCAFusion algorithmInstance;
301 
302  te::rp::PCAFusion::InputParameters algoInputParams = m_fusionPage->getInputPCAParams();
303  algoInputParams.m_lowResRasterPtr = rasterLower;
304  algoInputParams.m_highResRasterPtr = rasterHigher;
305 
306  te::rp::PCAFusion::OutputParameters algoOutputParams = m_fusionPage->getOutputPCAParams();
307  algoOutputParams.m_rInfo = m_rasterInfoPage->getWidget()->getInfo();
308  algoOutputParams.m_rType = m_rasterInfoPage->getWidget()->getType();
309 
310  //progress
312 
313  QApplication::setOverrideCursor(Qt::WaitCursor);
314 
315  try
316  {
317  if(algorithmInstance.initialize(algoInputParams))
318  {
319  if(algorithmInstance.execute(algoOutputParams))
320  {
321  algoOutputParams.reset();
322 
323  //set output layer
325  m_rasterInfoPage->getWidget()->getInfo());
326 
327  QMessageBox::information(this, tr("Fusion"), tr("Fusion ended sucessfully"));
328  }
329  else
330  {
331  QMessageBox::critical(this, tr("Fusion"), tr("Fusion execution error.") +
332  ( " " + algorithmInstance.getErrorMessage() ).c_str());
333 
334  QApplication::restoreOverrideCursor();
335 
336  delete rasterLower;
337  delete rasterHigher;
338 
339  return false;
340  }
341  }
342  else
343  {
344  QMessageBox::critical(this, tr("Fusion"), tr("Fusion initialization error.") +
345  ( " " + algorithmInstance.getErrorMessage() ).c_str() );
346 
347  QApplication::restoreOverrideCursor();
348 
349  delete rasterLower;
350  delete rasterHigher;
351 
352  return false;
353  }
354  }
355  catch(const std::exception& e)
356  {
357  QMessageBox::warning(this, tr("Fusion"), e.what());
358 
359  QApplication::restoreOverrideCursor();
360 
361  delete rasterLower;
362  delete rasterHigher;
363 
364  return false;
365  }
366  catch(...)
367  {
368  QMessageBox::warning(this, tr("Fusion"), tr("An exception has occurred!"));
369 
370  QApplication::restoreOverrideCursor();
371 
372  delete rasterLower;
373  delete rasterHigher;
374 
375  return false;
376  }
377 
378  QApplication::restoreOverrideCursor();
379 
381 
382  delete rasterLower;
383  delete rasterHigher;
384 
385  return true;
386 }
387 
389 {
390  //get layer lower
391  std::list<te::map::AbstractLayerPtr> listLower = m_layerLowerSearchPage->getSearchWidget()->getSelecteds();
392  te::map::AbstractLayerPtr lLower = *listLower.begin();
393 
394  te::rst::Raster* inputRstLower(te::map::GetRaster(lLower.get()));
395 
396  //get layer higher
397  std::list<te::map::AbstractLayerPtr> listHigher = m_layerHigherSearchPage->getSearchWidget()->getSelecteds();
398  te::map::AbstractLayerPtr lHigher = *listHigher.begin();
399 
400  te::rst::Raster* inputRstHigher(te::map::GetRaster(lHigher.get()));
401 
402  te::rst::Raster* rasterLower = nullptr;
403  te::rst::Raster* rasterHigher = nullptr;
404 
405  adjustRasters(inputRstLower, inputRstHigher, rasterLower, rasterHigher);
406 
407  //run Wisper Fusion
408  te::rp::WisperFusion algorithmInstance;
409 
410  te::rp::WisperFusion::InputParameters algoInputParams = m_fusionPage->getInputWisperParams();
411  algoInputParams.m_lowResRasterPtr = rasterLower;
412  algoInputParams.m_highResRasterPtr = rasterHigher;
413 
414  te::rp::WisperFusion::OutputParameters algoOutputParams = m_fusionPage->getOutputWisperParams();
415  algoOutputParams.m_rInfo = m_rasterInfoPage->getWidget()->getInfo();
416  algoOutputParams.m_rType = m_rasterInfoPage->getWidget()->getType();
417 
418  //progress
420 
421  QApplication::setOverrideCursor(Qt::WaitCursor);
422 
423  try
424  {
425  if(algorithmInstance.initialize(algoInputParams))
426  {
427  if(algorithmInstance.execute(algoOutputParams))
428  {
429  algoOutputParams.reset();
430 
431  //set output layer
433  m_rasterInfoPage->getWidget()->getInfo());
434 
435  QMessageBox::information(this, tr("Fusion"), tr("Fusion ended sucessfully"));
436  }
437  else
438  {
439  QMessageBox::critical(this, tr("Fusion"), tr("Fusion execution error.") +
440  ( " " + algorithmInstance.getErrorMessage() ).c_str());
441 
442  QApplication::restoreOverrideCursor();
443 
444  delete rasterLower;
445  delete rasterHigher;
446 
447  return false;
448  }
449  }
450  else
451  {
452  QMessageBox::critical(this, tr("Fusion"), tr("Fusion initialization error.") +
453  ( " " + algorithmInstance.getErrorMessage() ).c_str() );
454 
455  QApplication::restoreOverrideCursor();
456 
457  delete rasterLower;
458  delete rasterHigher;
459 
460  return false;
461  }
462  }
463  catch(const std::exception& e)
464  {
465  QMessageBox::warning(this, tr("Fusion"), e.what());
466 
467  QApplication::restoreOverrideCursor();
468 
469  delete rasterLower;
470  delete rasterHigher;
471 
472  return false;
473  }
474  catch(...)
475  {
476  QMessageBox::warning(this, tr("Fusion"), tr("An exception has occurred!"));
477 
478  QApplication::restoreOverrideCursor();
479 
480  delete rasterLower;
481  delete rasterHigher;
482 
483  return false;
484  }
485 
486  QApplication::restoreOverrideCursor();
487 
489 
490  delete rasterLower;
491  delete rasterHigher;
492 
493  return true;
494 }
495 
497 {
498  assert(rInLower);
499  assert(rInHigher);
500 
501  if(!m_fusionPage->cropRasters())
502  {
503  rOutLower = rInLower;
504  rOutHigher = rInHigher;
505 
506  return;
507  }
508 
509  //get box
510  te::gm::Envelope boxLower = *rInLower->getExtent();
511  te::gm::Envelope boxHigher = *rInHigher->getExtent();
512 
513  //check if the box is equal
514  if(boxLower.equals(boxHigher))
515  {
516  rOutLower = rInLower;
517  rOutHigher = rInHigher;
518 
519  return;
520  }
521 
522  //check if a reprojection is necessary
523  bool reproject = rInLower->getSRID() != rInHigher->getSRID();
524 
525  if(reproject)
526  boxHigher.transform(rInHigher->getSRID(), rInLower->getSRID());
527 
528  //check the intersection box
529  if(!boxLower.intersects(boxHigher))
530  return;
531 
532  te::gm::Envelope interBox = boxLower.intersection(boxHigher);
533 
534  //generate lower raster
535  std::map<std::string, std::string> rLowerInfo;
536  rLowerInfo["FORCE_MEM_DRIVER"] = "TRUE";
537 // rLowerInfo["MEM_RASTER_NROWS"] = boost::lexical_cast<std::string>(interBox.getHeight() / rInLower->getResolutionX());
538 // rLowerInfo["MEM_RASTER_NCOLS"] = boost::lexical_cast<std::string>(interBox.getWidth() / rInLower->getResolutionY());
539 // rLowerInfo["MEM_RASTER_DATATYPE"] = boost::lexical_cast<std::string>(rInLower->getBandDataType(0));
540 // rLowerInfo["MEM_RASTER_NBANDS"] = boost::lexical_cast<std::string>(rInLower->getNumberOfBands());
541 
542  rOutLower = rInLower->trim(&interBox, rLowerInfo);
543 
544  //generate higher raster
545  std::map<std::string, std::string> rHigherInfo;
546  rHigherInfo["FORCE_MEM_DRIVER"] = "TRUE";
547 // rHigherInfo["MEM_RASTER_NROWS"] = boost::lexical_cast<std::string>(interBox.getHeight() / rInHigher->getResolutionX());
548 // rHigherInfo["MEM_RASTER_NCOLS"] = boost::lexical_cast<std::string>(interBox.getWidth() / rInHigher->getResolutionY());
549 // rHigherInfo["MEM_RASTER_DATATYPE"] = boost::lexical_cast<std::string>(rInHigher->getBandDataType(0));
550 // rHigherInfo["MEM_RASTER_NBANDS"] = boost::lexical_cast<std::string>(rInHigher->getNumberOfBands());
551 
552  if(reproject)
553  {
554  boxHigher.transform(rInLower->getSRID(), rInHigher->getSRID());
555 
556  rOutHigher = rInHigher->transform(rInLower->getSRID(), boxHigher.getLowerLeftX(), boxHigher.getLowerLeftY(), boxHigher.getUpperRightX(), boxHigher.getUpperRightY(), rHigherInfo);
557  }
558  else
559  rOutHigher = rInHigher->trim(&interBox, rHigherInfo);
560 }
561 
563 {
564  this->adjustSize();
565 }
const std::string & getErrorMessage() const
Return the current error message if there is any.
void adjustRasters(te::rst::Raster *rInLower, te::rst::Raster *rInHigher, te::rst::Raster *&rOutLower, te::rst::Raster *&rOutHigher)
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters.
Definition: PCAFusion.cpp:139
te::gm::Envelope * getExtent()
Returns the geographic extension of the raster data.
te::rst::Raster const * m_highResRasterPtr
Input high-resolution raster.
Definition: PCAFusion.h:66
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
Definition: IHSFusion.h:114
te::rst::Raster const * m_lowResRasterPtr
Input low-resolution multi-band raster.
Definition: WisperFusion.h:69
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
Definition: IHSFusion.h:112
Fusion of a low-resolution multi-band image with a high resolution image using the WiSpeR method...
Definition: WisperFusion.h:57
std::unique_ptr< te::qt::widgets::LayerSearchWizardPage > m_layerLowerSearchPage
Definition: FusionWizard.h:94
Fusion of a low-resolution multi-band image with a high resolution image using the IHS method...
Definition: IHSFusion.h:56
bool intersects(const Envelope &rhs) const
It returns true if the envelopes "spatially intersects".
std::unique_ptr< te::qt::widgets::RasterInfoWizardPage > m_rasterInfoPage
Definition: FusionWizard.h:96
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state...
Definition: PCAFusion.cpp:109
void setPageReference(const QString &ref)
Sets the documentation page reference.
IHSFusion output parameters.
Definition: IHSFusion.h:108
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
Definition: PCAFusion.h:100
virtual Raster * trim(const te::gm::Envelope *env, const std::map< std::string, std::string > &rinfo) const
Subsetting operation for trimming (cropping) the raster.
const double & getUpperRightX() const
It returns a constant refernce to the x coordinate of the upper right corner.
IHSFusion input parameters.
Definition: IHSFusion.h:64
std::unique_ptr< te::qt::widgets::FusionWizardPage > m_fusionPage
Definition: FusionWizard.h:93
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.
const double & getLowerLeftY() const
It returns a constant refernce to the y coordinate of the lower left corner.
PCAFusion output parameters.
Definition: PCAFusion.h:96
const double & getUpperRightY() const
It returns a constant refernce to the x coordinate of the upper right corner.
Fusion of a low-resolution multi-band image with a high resolution image using the PCA (Principal com...
Definition: PCAFusion.h:50
te::rst::Raster const * m_lowResRasterPtr
Input low-resolution multi-band raster.
Definition: PCAFusion.h:62
WisperFusion output parameters.
Definition: WisperFusion.h:117
This file defines a class for a Raster Info Wizard page.
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters.
This file defines a class for a Fusion Wizard page.
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters.
WisperFusion input parameters.
Definition: WisperFusion.h:65
An Envelope defines a 2D rectangular region.
An abstract class for raster data strucutures.
This class is GUI used to define the raster info parameters for raster factory.
te::map::AbstractLayerPtr getOutputLayer()
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.
Definition: PCAFusion.cpp:288
te::rst::Raster const * m_highResRasterPtr
Input high-resolution raster.
Definition: WisperFusion.h:77
This class is GUI used to define the fusion parameters for the RP fusion operation.
Utility functions for the data access module.
A Qt dialog that allows users to run a fusion operation defined by RP module.
bool equals(const Envelope &rhs) const
It returns true if the envelopes are "spatially equal".
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
Definition: WisperFusion.h:123
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state...
virtual bool validateCurrentPage()
TEMAPEXPORT te::rst::Raster * GetRaster(AbstractLayer *layer)
It gets the raster referenced by the given data set layer.
int getSRID() const
Returns the raster spatial reference system identifier.
virtual Raster * transform(int srid, const std::map< std::string, std::string > &rinfo, int m=1) const
Reprojects this raster to a distinct SRS. This method reprojects this raster to a distinct SRS...
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state...
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
Definition: PCAFusion.h:102
TEQTWIDGETSEXPORT te::map::AbstractLayerPtr createLayer(const std::string &driverName, const te::core::URI &connInfo)
Push button that uses te::qt::widgets::HelpManager on its mouse pressed implementation.
PCAFusion input parameters.
Definition: PCAFusion.h:58
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.
std::unique_ptr< te::qt::widgets::LayerSearchWizardPage > m_layerHigherSearchPage
Definition: FusionWizard.h:95
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
Definition: WisperFusion.h:121
te::rst::Raster const * m_highResRasterPtr
Input high-resolution raster.
Definition: IHSFusion.h:76
Envelope intersection(const Envelope &rhs) const
It returns an envelope that represents the point set intersection with another envelope.
te::rst::Raster const * m_lowResRasterPtr
Input low-resolution multi-band raster.
Definition: IHSFusion.h:68
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
void transform(int oldsrid, int newsrid)
It will transform the coordinates of the Envelope from the old SRS to the new one.
TEQTWIDGETSEXPORT void applyRasterMultiResolution(const QString &toolName, te::rst::Raster *raster)
void setList(std::list< te::map::AbstractLayerPtr > &layerList)
te::map::AbstractLayerPtr m_outputLayer
Definition: FusionWizard.h:98