All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Blender.h
Go to the documentation of this file.
1 /* Copyright (C) 2001-2009 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/rp/Blender.h
22  \brief Blended pixel value calculation for two overlaped rasters.
23  */
24 
25 #ifndef __TERRALIB_RP_INTERNAL_BLENDER_H
26 #define __TERRALIB_RP_INTERNAL_BLENDER_H
27 
28 #include "Config.h"
29 #include "Macros.h"
30 #include "../raster/Grid.h"
31 #include "../raster/Raster.h"
32 #include "../raster/Interpolator.h"
33 #include "../raster/RasterSynchronizer.h"
34 #include "../geometry/Polygon.h"
35 #include "../geometry/MultiPolygon.h"
36 #include "../geometry/Point.h"
37 #include "../geometry/GeometricTransformation.h"
38 
39 #include <boost/noncopyable.hpp>
40 
41 #include <vector>
42 #include <complex>
43 #include <memory>
44 
45 namespace te
46 {
47  namespace rp
48  {
49  /*!
50  \class Blender
51  \brief Blended pixel value calculation for two overlaped rasters.
52  \details The overlap between the two images is modeled by the given geometric transformation direct mapping input raster 1 indexed coords (line, column) to input raster 2 indexed coords.
53  \note Optimized for rasters where all bands have the same blocking scheme.
54  \ingroup rp_aux
55  */
56  class TERPEXPORT Blender : public boost::noncopyable
57  {
58  public:
59 
60  /*! \enum BlendMethod Pixel Blend methods. */
62  {
63  InvalidBlendMethod = 0, //!< Invalid blending method.
64  NoBlendMethod = 1, //!< No blending performed.
65  EuclideanDistanceMethod = 2 //!< Euclidean distance method.
66  };
67 
68  /*! Default constructor. */
69  Blender();
70 
71  /*! Default destructor. */
72  ~Blender();
73 
74  /*!
75  \brief Inititate the blender instance.
76  \param raster1 Input raster 1.
77  \param raster1Bands Input raster 1 band indexes to use.
78  \param raster2 Input raster 2.
79  \param raster2Bands Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
80  \param blendMethod The blend method to apply.
81  \param interpMethod1 The interpolation method to use when reading raster 1 data.
82  \param interpMethod2 The interpolation method to use when reading raster 2 data.
83  \param noDataValue The value returned where there is no pixel data bo blend.
84  \param forceInputNoDataValue Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignored)
85  \param pixelOffsets1 The values offset to be applied to raster 1 pixel values before the blended value calcule (one element for each used raster channel/band).
86  \param pixelScales1 The values scale to be applied to raster 1 pixel values before the blended value calcule (one element for each used raster channel/band).
87  \param pixelOffsets2 The values offset to be applied to raster 2 pixel values before the blended value calcule (one element for each used raster channel/band).
88  \param pixelScales2 The values scale to be applied to raster 2 pixel values before the blended value calcule (one element for each used raster channel/band).
89  \param r1ValidDataDelimiterPtr A pointer to a geometry (raster 1 world/projected coords) delimiting the raster region with valid data, or null if all raster data area is valid.
90  \param r2ValidDataDelimiterPtr A pointer to a geometry (raster 2 world/projected coords) delimiting the raster region with valid data, or null if all raster data area is valid.
91  \param geomTransformation A transformation mapping raster 1 pixels ( te::gm::GTParameters::TiePoint::first ) to raster 2 pixels ( te::gm::GTParameters::TiePoint::second ) (Note: all coords are indexed by lines/columns).
92  \param threadsNumber Enable/disable the use of threads when applicable (0:automatic , 1:disabled, any other integer dictates the number of threads).
93  \param enableProgressInterface Enable/disable the use of a progress interface when applicable.
94  \return true if ok, false on errors
95  */
96  bool initialize(
97  te::rst::Raster& raster1,
98  const std::vector< unsigned int >& raster1Bands,
99  const te::rst::Raster& raster2,
100  const std::vector< unsigned int >& raster2Bands,
101  const BlendMethod& blendMethod,
102  const te::rst::Interpolator::Method& interpMethod1,
103  const te::rst::Interpolator::Method& interpMethod2,
104  const double& noDataValue,
105  const bool forceInputNoDataValue,
106  const std::vector< double >& pixelOffsets1,
107  const std::vector< double >& pixelScales1,
108  const std::vector< double >& pixelOffsets2,
109  const std::vector< double >& pixelScales2,
110  te::gm::MultiPolygon const * const r1ValidDataDelimiterPtr,
111  te::gm::MultiPolygon const * const r2ValidDataDelimiterPtr,
112  const te::gm::GeometricTransformation& geomTransformation,
113  const unsigned int threadsNumber,
114  const bool enableProgressInterface );
115 
116 
117  /*!
118  \brief Blend a pixel value using the current parameters.
119  \param line Line (raster 1 reference).
120  \param col Column (raster 1 reference).
121  \param values A pointer to a pre-allocated vector where the blended values will be stored.
122  \note The caller of this method must be aware that the returned blended value may be outside the original input rasters valid values range.
123  \note Raster 1 values have precedence over raster 2 values (when applicable).
124  */
125  inline void getBlendedValues( const double& line, const double& col,
126  double* const values )
127  {
128  TERP_DEBUG_TRUE_OR_THROW( m_blendFuncPtr, "Invalid blend function pointer" );
129  (this->*m_blendFuncPtr)( line, col, values );
130  };
131 
132  /*!
133  \brief Execute blending of the given input rasters and write the result into raster1.
134  \note Raster 1 values have precedence over raster 2 values (when applicable).
135  */
136  bool blendIntoRaster1();
137 
138  protected:
139 
140  /*!
141  \brief Type definition for the a bleding function pointer.
142  \param line Raster 1 Line.
143  \param col Raster 1 Column.
144  \param values A pointer to a pre-allocated vector where the blended values will be stored.
145  \note The caller of this method must be aware that the returned blended value may be outside the original input rasters valid values range.
146  \note Raster 1 values have precedence over raster 2 values (when applicable).
147  */
148  typedef void (Blender::*BlendFunctPtr)( const double& line,
149  const double& col, double* const values );
150 
151  /*!
152  \brief Raster block info
153  */
155  {
157  unsigned int m_blkX;
158  unsigned int m_blkY;
164  };
165 
166  /*!
167  \brief The parameters passed to blendIntoRaster1Thread method.
168  */
170  {
171  public :
172 
173  bool* m_returnValuePtr; //!< A pointer to the threadreturn value.
174  bool* m_abortValuePtr; //!< A pointer to the abort execution value.
175  te::rst::RasterSynchronizer* m_sync1Ptr; //!< Raster 1 syncronizer pointer.
176  te::rst::RasterSynchronizer* m_sync2Ptr; //!< Raster 1 syncronizer pointer.
177  std::vector< RasterBlockInfo >* m_raster1BlocksInfosPtr; //!< blocks to process.
178  boost::mutex* m_mutexPtr; //!< mutex pointer.
179  boost::mutex* m_blockProcessedSignalMutexPtr; //!< Mutex used to update the main process progress update.
180  boost::condition_variable* m_blockProcessedSignalPtr; //!< Signal used to update the main process progress update.
181  unsigned int* m_runningThreadsCounterPtr; //!< a pointer to the running threads counter.
182  std::vector< unsigned int > m_raster1Bands; //!< Input raster 1 band indexes to use.
183  std::vector< unsigned int > m_raster2Bands; //!< Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
184  BlendMethod m_blendMethod; //!< The blend method to apply.
185  te::rst::Interpolator::Method m_interpMethod1; //!< The interpolation method to use when reading raster 1 data.
186  te::rst::Interpolator::Method m_interpMethod2; //!< The interpolation method to use when reading raster 2 data.
187  double m_noDataValue; //!< The value returned where there is no pixel data bo blend.
188  bool m_forceInputNoDataValue; //!< Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignored)
189  std::vector< double > m_pixelOffsets1; //!< The values offset to be applied to raster 1 pixel values before the blended value calcule (one element for each used raster channel/band).
190  std::vector< double > m_pixelScales1; //!< The values scale to be applied to raster 1 pixel values before the blended value calcule (one element for each used raster channel/band).
191  std::vector< double > m_pixelOffsets2; //!< The values offset to be applied to raster 2 pixel values before the blended value calcule (one element for each used raster channel/band).
192  std::vector< double > m_pixelScales2; //!< The values scale to be applied to raster 2 pixel values before the blended value calcule (one element for each used raster channel/band).
193  std::auto_ptr< te::gm::MultiPolygon > m_r1ValidDataDelimiterPtr; //!< A pointer to a geometry (raster 1 world/projected coords) delimiting the raster region with valid data, or null if all raster data area is valid.
194  std::auto_ptr< te::gm::MultiPolygon > m_r2ValidDataDelimiterPtr; //!< A pointer to a geometry (raster 2 world/projected coords) delimiting the raster region with valid data, or null if all raster data area is valid.
195  std::auto_ptr< te::gm::GeometricTransformation > m_geomTransformationPtr; //!< A transformation mapping raster 1 pixels ( te::gm::GTParameters::TiePoint::first ) to raster 2 pixels ( te::gm::GTParameters::TiePoint::second ) (Note: all coords are indexed by lines/columns).
196  unsigned long int m_maxRasterCachedBlocks; //!< The maximum number of raster cache blocks.
197  bool m_useProgress; //!< If enabled each thread will use its own progress interface, if false only a signal will be emitted on each processed block.
198 
200 
202 
204 
206  };
207 
208  bool m_enableProgressInterface; //!< Enable progress interface.
209  bool m_forceInputNoDataValue; //!< Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignored)
210  unsigned int m_threadsNumber; //!< The number of threads to use (0:automatic , 1:disabled, any other integer dictates the number of threads)..
211  BlendMethod m_blendMethod; //!< The blend method to apply.
212  BlendFunctPtr m_blendFuncPtr; //!< The current blend function.
213  te::rst::Raster * m_raster1Ptr; //!< Input raster 1.
214  te::rst::Raster const * m_raster2Ptr; //!< Input raster 2.
215  std::auto_ptr< te::gm::MultiPolygon > m_r1ValidDataDelimiterPtr; //!< A pointer to a geometry (raster 1 world/projected coords) delimiting the raster region with valid data, or null if all raster data area is valid.
216  std::auto_ptr< te::gm::MultiPolygon > m_r2ValidDataDelimiterPtr; //!< A pointer to a geometry (raster 2 world/projected coords) delimiting the raster region with valid data, or null if all raster data area is valid.
217  std::auto_ptr< te::gm::MultiPolygon > m_intersectionPtr; //!< The Intersection geometry ( raster 1 indexed coods).
218  std::vector< std::pair< te::gm::Coord2D, te::gm::Coord2D > > m_r1IntersectionSegmentsPoints; //!< A sub-set of the intersection polygon wich is part of raster 1 valid data polygon ( raster 1 indexed coods).
219  std::size_t m_r1IntersectionSegmentsPointsSize; //!< Size of m_r1IntersectionSegmentsPoints;
220  std::vector< std::pair< te::gm::Coord2D, te::gm::Coord2D > > m_r2IntersectionSegmentsPoints; //!< A sub-set of the intersection polygon wich is part of raster 2 valid data polygon ( raster 1 indexed coods).
221  std::size_t m_r2IntersectionSegmentsPointsSize; //!< Size of m_r2IntersectionSegmentsPoints;
222  te::gm::GeometricTransformation* m_geomTransformationPtr; //!< A transformation mapping raster 1 pixels ( te::gm::GTParameters::TiePoint::first ) to raster 2 ( te::gm::GTParameters::TiePoint::second ) (Note: all coords are indexed by lines/columns).
223  te::rst::Interpolator::Method m_interpMethod1; //!< The interpolation method to use when reading raster 1 data.
224  te::rst::Interpolator::Method m_interpMethod2; //!< The interpolation method to use when reading raster 2 data.
225  double m_outputNoDataValue; //!< The output raster no-data value.
226  te::rst::Interpolator* m_interp1; //!< Raster 1 interpolator instance pointer.
227  te::rst::Interpolator* m_interp2; //!< Raster 2 interpolator instance pointer.
228  std::vector< unsigned int > m_raster1Bands; //!< Input raster 1 band indexes to use.
229  std::vector< unsigned int > m_raster2Bands; //!< Input raster 2 band indexes to use.
230  std::vector< double > m_pixelOffsets1; //!< The values offset to be applied to raster 1 pixel values before the blended value calcule (one element for each used raster channel/band).
231  std::vector< double > m_pixelScales1; //!< The values scale to be applied to raster 1 pixel values before the blended value calcule (one element for each used raster channel/band).
232  std::vector< double > m_pixelOffsets2; //!< The values offset to be applied to raster 2 pixel values before the blended value calcule (one element for each used raster channel/band).
233  std::vector< double > m_pixelScales2; //!< The values scale to be applied to raster 2 pixel values before the blended value calcule (one element for each used raster channel/band).
234  std::vector< double > m_raster1NoDataValues; //! Raster 1 no-data values (on value per band).
235  std::vector< double > m_raster2NoDataValues; //! Raster 2 no-data values (on value per band).
236 
237  // variables used by the noBlendMethodImp method
244  std::complex< double > m_noBlendMethodImp_cValue;
247 
248  // variables used by the euclideanDistanceMethodImp method
252  std::complex< double > m_euclideanDistanceMethodImp_cValue1;
253  std::complex< double > m_euclideanDistanceMethodImp_cValue2;
261 
262 
263  /*! \brief Reset the instance to its initial default state. */
264  void initState();
265 
266  /*! \brief Clear all internal allocated resources. */
267  void clear();
268 
269  /*! \brief Set the value of m_blendFuncPtr following the given blend method. */
270  void setBlendFunctionPonter( const BlendMethod blendMethod );
271 
272  /*!
273  \brief Implementation for NoBlendMethod.
274  \param line Raster 1 Line.
275  \param col Raster 1 Column.
276  \param values A pointer to a pre-allocated vector where the blended values will be stored.
277  */
278  void noBlendMethodImp( const double& line1, const double& col1,
279  double* const values );
280 
281  /*!
282  \brief Implementation for EuclideanDistanceMethod.
283  \param line Raster 1 Line.
284  \param col Raster 1 Column.
285  \param values A pointer to a pre-allocated vector where the blended values will be stored.
286  */
287  void euclideanDistanceMethodImp( const double& line1, const double& col1,
288  double* const values );
289 
290  /*!
291  \brief Thread entry for the method blendIntoRaster1.
292 
293  */
294  static void blendIntoRaster1Thread( BlendIntoRaster1ThreadParams* paramsPtr );
295  };
296 
297  } // end namespace rp
298 } // end namespace te
299 
300 #endif // __TERRALIB_RP_INTERNAL_ALGORITHM_H
301 
double m_euclideanDistanceMethodImp_aux1
Definition: Blender.h:259
te::rst::Interpolator::Method m_interpMethod1
The interpolation method to use when reading raster 1 data.
Definition: Blender.h:223
std::vector< std::pair< te::gm::Coord2D, te::gm::Coord2D > > m_r2IntersectionSegmentsPoints
A sub-set of the intersection polygon wich is part of raster 2 valid data polygon ( raster 1 indexed ...
Definition: Blender.h:220
MultiPolygon is a MultiSurface whose elements are Polygons.
Definition: MultiPolygon.h:50
std::auto_ptr< te::gm::MultiPolygon > m_intersectionPtr
The Intersection geometry ( raster 1 indexed coods).
Definition: Blender.h:217
unsigned long int m_maxRasterCachedBlocks
The maximum number of raster cache blocks.
Definition: Blender.h:196
bool * m_abortValuePtr
A pointer to the abort execution value.
Definition: Blender.h:174
std::vector< unsigned int > m_raster2Bands
Input raster 2 band indexes to use.
Definition: Blender.h:229
double m_euclideanDistanceMethodImp_Point2Col
Definition: Blender.h:251
std::vector< RasterBlockInfo > * m_raster1BlocksInfosPtr
blocks to process.
Definition: Blender.h:177
The parameters passed to blendIntoRaster1Thread method.
Definition: Blender.h:169
bool m_forceInputNoDataValue
Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignor...
Definition: Blender.h:188
bool m_useProgress
If enabled each thread will use its own progress interface, if false only a signal will be emitted on...
Definition: Blender.h:197
boost::condition_variable * m_blockProcessedSignalPtr
Signal used to update the main process progress update.
Definition: Blender.h:180
double m_euclideanDistanceMethodImp_currDist
Definition: Blender.h:255
std::vector< double > m_pixelScales1
The values scale to be applied to raster 1 pixel values before the blended value calcule (one element...
Definition: Blender.h:190
Blended pixel value calculation for two overlaped rasters.
Definition: Blender.h:56
std::auto_ptr< te::gm::MultiPolygon > m_r2ValidDataDelimiterPtr
A pointer to a geometry (raster 2 world/projected coords) delimiting the raster region with valid dat...
Definition: Blender.h:194
std::vector< double > m_pixelOffsets1
The values offset to be applied to raster 1 pixel values before the blended value calcule (one elemen...
Definition: Blender.h:189
std::vector< double > m_pixelScales2
The values scale to be applied to raster 2 pixel values before the blended value calcule (one element...
Definition: Blender.h:233
te::rst::Raster const * m_raster2Ptr
Input raster 2.
Definition: Blender.h:214
double m_outputNoDataValue
The output raster no-data value.
Definition: Blender.h:225
It interpolates one pixel based on a selected algorithm. Methods currently available are Nearest Neig...
Definition: Interpolator.h:54
boost::mutex * m_mutexPtr
mutex pointer.
Definition: Blender.h:178
std::vector< double > m_raster2NoDataValues
Raster 1 no-data values (on value per band).
Definition: Blender.h:235
te::rst::Interpolator::Method m_interpMethod1
The interpolation method to use when reading raster 1 data.
Definition: Blender.h:185
std::vector< unsigned int > m_raster2Bands
Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
Definition: Blender.h:183
bool * m_returnValuePtr
A pointer to the threadreturn value.
Definition: Blender.h:173
unsigned int * m_runningThreadsCounterPtr
a pointer to the running threads counter.
Definition: Blender.h:181
An access synchronizer to be used in SynchronizedRaster raster instances.
2D Geometric transformation base class.
te::rst::RasterSynchronizer * m_sync2Ptr
Raster 1 syncronizer pointer.
Definition: Blender.h:176
std::size_t m_r1IntersectionSegmentsPointsSize
Size of m_r1IntersectionSegmentsPoints;.
Definition: Blender.h:219
double m_euclideanDistanceMethodImp_dist2
Definition: Blender.h:257
double m_noBlendMethodImp_Point1XProj1
Raster 2 no-data values (on value per band).
Definition: Blender.h:238
std::complex< double > m_noBlendMethodImp_cValue
Definition: Blender.h:244
double m_euclideanDistanceMethodImp_dist1
Definition: Blender.h:256
Raster block info.
Definition: Blender.h:154
bool m_enableProgressInterface
Enable progress interface.
Definition: Blender.h:208
bool m_forceInputNoDataValue
Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignor...
Definition: Blender.h:209
double m_euclideanDistanceMethodImp_aux2
Definition: Blender.h:260
std::auto_ptr< te::gm::MultiPolygon > m_r1ValidDataDelimiterPtr
A pointer to a geometry (raster 1 world/projected coords) delimiting the raster region with valid dat...
Definition: Blender.h:215
std::vector< double > m_pixelOffsets1
The values offset to be applied to raster 1 pixel values before the blended value calcule (one elemen...
Definition: Blender.h:230
A point with x and y coordinate values.
Definition: Point.h:50
An abstract class for raster data strucutures.
Definition: Raster.h:71
std::size_t m_r2IntersectionSegmentsPointsSize
Size of m_r2IntersectionSegmentsPoints;.
Definition: Blender.h:221
te::rst::Raster * m_raster1Ptr
Input raster 1.
Definition: Blender.h:213
std::vector< double > m_pixelOffsets2
The values offset to be applied to raster 2 pixel values before the blended value calcule (one elemen...
Definition: Blender.h:232
std::vector< double > m_raster1NoDataValues
Definition: Blender.h:234
unsigned int m_rasterCols2ProcessBound
Definition: Blender.h:163
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:111
double m_noBlendMethodImp_Point1YProj2
Definition: Blender.h:241
te::rst::RasterSynchronizer * m_sync1Ptr
Raster 1 syncronizer pointer.
Definition: Blender.h:175
std::vector< double > m_pixelScales1
The values scale to be applied to raster 1 pixel values before the blended value calcule (one element...
Definition: Blender.h:231
void getBlendedValues(const double &line, const double &col, double *const values)
Blend a pixel value using the current parameters.
Definition: Blender.h:125
double m_noBlendMethodImp_Point2Col
Definition: Blender.h:243
BlendFunctPtr m_blendFuncPtr
The current blend function.
Definition: Blender.h:212
std::vector< unsigned int > m_raster1Bands
Input raster 1 band indexes to use.
Definition: Blender.h:228
std::size_t m_euclideanDistanceMethodImp_vecIdx
Definition: Blender.h:258
unsigned int m_blkTotalPixelsNumber
Definition: Blender.h:159
std::auto_ptr< te::gm::MultiPolygon > m_r1ValidDataDelimiterPtr
A pointer to a geometry (raster 1 world/projected coords) delimiting the raster region with valid dat...
Definition: Blender.h:193
Method
Allowed interpolation methods.
Definition: Interpolator.h:61
unsigned int m_euclideanDistanceMethodImp_BandIdx
Definition: Blender.h:254
Configuration flags for the Raster Processing module of TerraLib.
double m_noBlendMethodImp_Point1XProj2
Definition: Blender.h:240
double m_noDataValue
The value returned where there is no pixel data bo blend.
Definition: Blender.h:187
unsigned int m_noBlendMethodImp_BandIdx
Definition: Blender.h:246
te::gm::GeometricTransformation * m_geomTransformationPtr
A transformation mapping raster 1 pixels ( te::gm::GTParameters::TiePoint::first ) to raster 2 ( te::...
Definition: Blender.h:222
unsigned int m_rasterRows2ProcessBound
Definition: Blender.h:161
te::rst::Interpolator::Method m_interpMethod2
The interpolation method to use when reading raster 2 data.
Definition: Blender.h:224
double m_noBlendMethodImp_Point2Line
Definition: Blender.h:242
boost::mutex * m_blockProcessedSignalMutexPtr
Mutex used to update the main process progress update.
Definition: Blender.h:179
double m_noBlendMethodImp_Value
Definition: Blender.h:245
BlendMethod m_blendMethod
The blend method to apply.
Definition: Blender.h:184
std::vector< double > m_pixelOffsets2
The values offset to be applied to raster 2 pixel values before the blended value calcule (one elemen...
Definition: Blender.h:191
std::auto_ptr< te::gm::MultiPolygon > m_r2ValidDataDelimiterPtr
A pointer to a geometry (raster 2 world/projected coords) delimiting the raster region with valid dat...
Definition: Blender.h:216
unsigned int m_threadsNumber
The number of threads to use (0:automatic , 1:disabled, any other integer dictates the number of thre...
Definition: Blender.h:210
unsigned int m_firstRasterRow2Process
Definition: Blender.h:160
std::complex< double > m_euclideanDistanceMethodImp_cValue1
Definition: Blender.h:252
double m_euclideanDistanceMethodImp_Point2Line
Definition: Blender.h:250
#define TERP_DEBUG_TRUE_OR_THROW(value, message)
Checks if value is true and throws an exception if not.
Definition: Macros.h:356
BlendMethod m_blendMethod
The blend method to apply.
Definition: Blender.h:211
std::vector< unsigned int > m_raster1Bands
Input raster 1 band indexes to use.
Definition: Blender.h:182
std::auto_ptr< te::gm::GeometricTransformation > m_geomTransformationPtr
A transformation mapping raster 1 pixels ( te::gm::GTParameters::TiePoint::first ) to raster 2 pixels...
Definition: Blender.h:195
double m_noBlendMethodImp_Point1YProj1
Definition: Blender.h:239
te::gm::Point m_euclideanDistanceMethodImp_auxPoint
Definition: Blender.h:249
te::rst::Interpolator * m_interp2
Raster 2 interpolator instance pointer.
Definition: Blender.h:227
std::complex< double > m_euclideanDistanceMethodImp_cValue2
Definition: Blender.h:253
std::vector< double > m_pixelScales2
The values scale to be applied to raster 2 pixel values before the blended value calcule (one element...
Definition: Blender.h:192
te::rst::Interpolator::Method m_interpMethod2
The interpolation method to use when reading raster 2 data.
Definition: Blender.h:186
std::vector< std::pair< te::gm::Coord2D, te::gm::Coord2D > > m_r1IntersectionSegmentsPoints
A sub-set of the intersection polygon wich is part of raster 1 valid data polygon ( raster 1 indexed ...
Definition: Blender.h:218
te::rst::Interpolator * m_interp1
Raster 1 interpolator instance pointer.
Definition: Blender.h:226
unsigned int m_firstRasterCol2Process
Definition: Blender.h:162