Blender.h
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/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 "../raster/TileIndexer.h"
35 #include "../geometry/Polygon.h"
36 #include "../geometry/MultiPolygon.h"
37 #include "../geometry/Point.h"
38 #include "../geometry/GeometricTransformation.h"
39 
40 #include <boost/noncopyable.hpp>
41 #include <boost/ptr_container/ptr_vector.hpp>
42 
43 #include <vector>
44 #include <complex>
45 #include <memory>
46 
47 namespace te
48 {
49  namespace rp
50  {
51  /*!
52  \class Blender
53  \brief Blended pixel value calculation for two overlaped rasters.
54  \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.
55  \note Optimized for rasters where all bands have the same blocking scheme.
56  \ingroup rp_aux
57  */
58  class TERPEXPORT Blender : public boost::noncopyable
59  {
60  public:
61 
62  /*! \enum BlendMethod Pixel Blend methods. */
64  {
65  InvalidBlendMethod, //!< Invalid blending method.
66  NoBlendMethod, //!< No blending performed.
67  EuclideanDistanceMethod, //!< Euclidean distance method.
68  SumMethod //!< Pixels will be summed inside the raster overlapped area.
69  };
70 
71  /*! Default constructor. */
72  Blender();
73 
74  /*! Default destructor. */
75  ~Blender();
76 
77  /*!
78  \brief Inititate the blender instance.
79  \param raster1 Input raster 1.
80  \param raster1Bands Input raster 1 band indexes to use.
81  \param raster2 Input raster 2.
82  \param raster2Bands Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
83  \param blendMethod The blend method to apply.
84  \param interpMethod1 The interpolation method to use when reading raster 1 data.
85  \param interpMethod2 The interpolation method to use when reading raster 2 data.
86  \param noDataValue The value returned where there is no pixel data bo blend.
87  \param forceRaster1NoDataValue Use noDataValue as the input raster 1 no-data value (The original rasters no-data values will be ignored)
88  \param forceRaster2NoDataValue Use noDataValue as the input raster 1 no-data value (The original rasters no-data values will be ignored)
89  \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).
90  \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).
91  \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).
92  \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).
93  \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.
94  \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.
95  \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).
96  \param threadsNumber Enable/disable the use of threads when applicable (0:automatic , 1:disabled, any other integer dictates the number of threads).
97  \param enableProgressInterface Enable/disable the use of a progress interface when applicable.
98  \return true if ok, false on errors
99  \note Aboute scale and offset parametrs: outValue = ( ( inputValue + offsetA ) * scale ) + offsetB
100  */
101  bool initialize(
102  te::rst::Raster& raster1,
103  const std::vector< unsigned int >& raster1Bands,
104  const te::rst::Raster& raster2,
105  const std::vector< unsigned int >& raster2Bands,
106  const BlendMethod& blendMethod,
107  const te::rst::Interpolator::Method& interpMethod1,
108  const te::rst::Interpolator::Method& interpMethod2,
109  const double& noDataValue,
110  const bool forceRaster1NoDataValue,
111  const bool forceRaster2NoDataValue,
112  const std::vector< double >& pixelOffsets1,
113  const std::vector< double >& pixelScales1,
114  const std::vector< double >& pixelOffsets2,
115  const std::vector< double >& pixelScales2,
116  te::gm::MultiPolygon const * const r1ValidDataDelimiterPtr,
117  te::gm::MultiPolygon const * const r2ValidDataDelimiterPtr,
118  const te::gm::GeometricTransformation& geomTransformation,
119  const unsigned int threadsNumber,
120  const bool enableProgressInterface );
121 
122 
123  /*!
124  \brief Blend a pixel value using the current parameters.
125  \param line Line (raster 1 reference).
126  \param col Column (raster 1 reference).
127  \param values A pointer to a pre-allocated vector where the blended values will be stored.
128  \note The caller of this method must be aware that the returned blended value may be outside the original input rasters valid values range.
129  \note Raster 1 values have precedence over raster 2 values (when applicable).
130  */
131  inline void getBlendedValues( const double& line, const double& col,
132  double* const values )
133  {
134  TERP_DEBUG_TRUE_OR_THROW( m_blendFuncPtr, "Invalid blend function pointer" );
135  (this->*m_blendFuncPtr)( line, col, values );
136  };
137 
138  /*!
139  \brief Execute blending of the given input rasters and write the result into raster1.
140  \note Raster 1 values have precedence over raster 2 values (when applicable).
141  */
142  bool blendIntoRaster1();
143 
144  protected:
145 
146  /*!
147  \brief Type definition for the a bleding function pointer.
148  \param line Raster 1 Line.
149  \param col Raster 1 Column.
150  \param values A pointer to a pre-allocated vector where the blended values will be stored.
151  \note The caller of this method must be aware that the returned blended value may be outside the original input rasters valid values range.
152  \note Raster 1 values have precedence over raster 2 values (when applicable).
153  */
154  typedef void (Blender::*BlendFunctPtr)( const double& line,
155  const double& col, double* const values );
156 
157  /*!
158  \brief Raster block info
159  */
161  {
163  unsigned int m_blkX;
164  unsigned int m_blkY;
170  };
171 
172  /*!
173  \brief The parameters passed to blendIntoRaster1Thread method.
174  */
176  {
177  public :
178 
179  bool* m_returnValuePtr; //!< A pointer to the threadreturn value.
180  bool* m_abortValuePtr; //!< A pointer to the abort execution value.
181  te::rst::RasterSynchronizer* m_sync1Ptr; //!< Raster 1 syncronizer pointer.
182  te::rst::RasterSynchronizer* m_sync2Ptr; //!< Raster 1 syncronizer pointer.
183  std::vector< RasterBlockInfo >* m_raster1BlocksInfosPtr; //!< blocks to process.
184  boost::mutex* m_mutexPtr; //!< mutex pointer.
185  boost::mutex* m_blockProcessedSignalMutexPtr; //!< Mutex used to update the main process progress update.
186  boost::condition_variable* m_blockProcessedSignalPtr; //!< Signal used to update the main process progress update.
187  unsigned int* m_runningThreadsCounterPtr; //!< a pointer to the running threads counter.
188  std::vector< unsigned int > m_raster1Bands; //!< Input raster 1 band indexes to use.
189  std::vector< unsigned int > m_raster2Bands; //!< Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
190  BlendMethod m_blendMethod; //!< The blend method to apply.
191  te::rst::Interpolator::Method m_interpMethod2; //!< The interpolation method to use when reading raster 2 data.
192  double m_noDataValue; //!< The value returned where there is no pixel data bo blend.
193  bool m_forceRaster1NoDataValue; //!< Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignored)
194  bool m_forceRaster2NoDataValue; //!< Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignored)
195  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).
196  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).
197  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).
198  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).
199  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.
200  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.
201  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).
202  unsigned long int m_maxRasterCachedBlocks; //!< The maximum number of raster cache blocks.
203  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.
204 
206 
208 
210 
212  };
213 
214  bool m_enableProgressInterface; //!< Enable progress interface.
215  bool m_forceRaster1NoDataValue; //!< Use noDataValue as the input raster 1 no-data value (The original rasters no-data values will be ignored)
216  bool m_forceRaster2NoDataValue; //!< Use noDataValue as the input raster 2 no-data value (The original rasters no-data values will be ignored)
217  unsigned int m_threadsNumber; //!< The number of threads to use (0:automatic , 1:disabled, any other integer dictates the number of threads)..
218  BlendMethod m_blendMethod; //!< The blend method to apply.
219  BlendFunctPtr m_blendFuncPtr; //!< The current blend function.
220  te::rst::Raster * m_raster1Ptr; //!< Input raster 1.
221  te::rst::Raster const * m_raster2Ptr; //!< Input raster 2.
222  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.
223  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.
224  std::auto_ptr< te::gm::Geometry > m_intersectionPtr; //!< The Intersection geometry ( raster 1 indexed coods).
225  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).
226  std::size_t m_r1IntersectionSegmentsPointsSize; //!< Size of m_r1IntersectionSegmentsPoints;
227  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).
228  std::size_t m_r2IntersectionSegmentsPointsSize; //!< Size of m_r2IntersectionSegmentsPoints;
229  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).
230  te::rst::Interpolator::Method m_interpMethod1; //!< The interpolation method to use when reading raster 1 data.
231  te::rst::Interpolator::Method m_interpMethod2; //!< The interpolation method to use when reading raster 2 data.
232  double m_outputNoDataValue; //!< The output raster no-data value.
233  std::auto_ptr< te::rst::Interpolator > m_interp1Ptr; //!< Raster 1 interpolator instance pointer.
234  std::auto_ptr< te::rst::Interpolator > m_interp2Ptr; //!< Raster 2 interpolator instance pointer.
235  std::vector< unsigned int > m_raster1Bands; //!< Input raster 1 band indexes to use.
236  std::vector< unsigned int > m_raster2Bands; //!< Input raster 2 band indexes to use.
237  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).
238  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).
239  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).
240  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).
241  std::vector< double > m_raster1NoDataValues; //!< Raster 1 no-data values (on value per band).
242  std::vector< double > m_raster2NoDataValues; //!< Raster 2 no-data values (on value per band).
243  boost::ptr_vector< te::rst::TileIndexer > m_intersectionTileIndexers; //!< The Intersection geometry tile indexers( raster 1 indexed coods), one indexer for each intersection polygon.
244 
245  // variables used by the noBlendMethodImp method
252  std::complex< double > m_noBlendMethodImp_cValue;
255 
256  // variables used by the euclideanDistanceMethodImp method
260  std::complex< double > m_euclideanDistanceMethodImp_cValue1;
261  std::complex< double > m_euclideanDistanceMethodImp_cValue2;
271 
272  // variables used by the sumMethodImp method
276  std::complex< double > m_sumMethodImp_cValue1;
277  std::complex< double > m_sumMethodImp_cValue2;
278  unsigned int m_sumMethodImp_BandIdx;
281 
282  /*! \brief Reset the instance to its initial default state. */
283  void initState();
284 
285  /*! \brief Clear all internal allocated resources. */
286  void clear();
287 
288  /*! \brief Set the value of m_blendFuncPtr following the given blend method. */
289  void setBlendFunctionPonter( const BlendMethod blendMethod );
290 
291  /*!
292  \brief Implementation for NoBlendMethod.
293  \param line Raster 1 Line.
294  \param col Raster 1 Column.
295  \param values A pointer to a pre-allocated vector where the blended values will be stored.
296  */
297  void noBlendMethodImp( const double& line1, const double& col1,
298  double* const values );
299 
300  /*!
301  \brief Implementation for EuclideanDistanceMethod.
302  \param line Raster 1 Line.
303  \param col Raster 1 Column.
304  \param values A pointer to a pre-allocated vector where the blended values will be stored.
305  */
306  void euclideanDistanceMethodImp( const double& line1, const double& col1,
307  double* const values );
308 
309  /*!
310  \brief Implementation for SumMethod.
311  \param line Raster 1 Line.
312  \param col Raster 1 Column.
313  \param values A pointer to a pre-allocated vector where the blended values will be stored.
314  */
315  void sumMethodImp( const double& line1, const double& col1,
316  double* const values );
317 
318  /*!
319  \brief Thread entry for the method blendIntoRaster1.
320 
321  */
322  static void blendIntoRaster1Thread( BlendIntoRaster1ThreadParams* paramsPtr );
323 
324  /*!
325  \brief Extract segments from the given geometry.
326  \param geometryPtr Input geometry.
327  \param segments Found segments (appended here).
328  \return true if OK, false on errors.
329  */
330  bool getSegments( te::gm::Geometry const * const geometryPtr,
331  std::vector< std::pair< te::gm::Coord2D, te::gm::Coord2D > >& segments ) const;
332 
333 
334  /*!
335  \brief Creater polygon tile indexers from the given geometry (only if it is a polygon or a collection of polygons).
336  \param geometryPtr Input geometry.
337  \param tileIndexers Created indexers (appended here).
338  \return true if OK, false on errors.
339  \note No indexers will be returned for geometries other than polygons or collections of polygons.
340  */
341  bool getTileIndexers( te::gm::Geometry const * const geometryPtr,
342  boost::ptr_vector< te::rst::TileIndexer >& tileIndexers ) const;
343  };
344 
345  } // end namespace rp
346 } // end namespace te
347 
348 #endif // __TERRALIB_RP_INTERNAL_ALGORITHM_H
349 
double m_euclideanDistanceMethodImp_aux1
Definition: Blender.h:267
te::rst::Interpolator::Method m_interpMethod1
The interpolation method to use when reading raster 1 data.
Definition: Blender.h:230
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:227
MultiPolygon is a MultiSurface whose elements are Polygons.
Definition: MultiPolygon.h:50
unsigned long int m_maxRasterCachedBlocks
The maximum number of raster cache blocks.
Definition: Blender.h:202
bool * m_abortValuePtr
A pointer to the abort execution value.
Definition: Blender.h:180
std::vector< unsigned int > m_raster2Bands
Input raster 2 band indexes to use.
Definition: Blender.h:236
double m_euclideanDistanceMethodImp_Point2Col
Definition: Blender.h:259
std::vector< RasterBlockInfo > * m_raster1BlocksInfosPtr
blocks to process.
Definition: Blender.h:183
The parameters passed to blendIntoRaster1Thread method.
Definition: Blender.h:175
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:203
boost::condition_variable * m_blockProcessedSignalPtr
Signal used to update the main process progress update.
Definition: Blender.h:186
double m_euclideanDistanceMethodImp_currDist
Definition: Blender.h:263
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:196
Blended pixel value calculation for two overlaped rasters.
Definition: Blender.h:58
double m_sumMethodImp_Point2Col
Definition: Blender.h:275
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:200
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:195
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:240
double m_sumMethodImp_Point2Line
Definition: Blender.h:274
std::complex< double > m_sumMethodImp_cValue2
Definition: Blender.h:277
te::rst::Raster const * m_raster2Ptr
Input raster 2.
Definition: Blender.h:221
double m_outputNoDataValue
The output raster no-data value.
Definition: Blender.h:232
boost::mutex * m_mutexPtr
mutex pointer.
Definition: Blender.h:184
std::vector< double > m_raster2NoDataValues
Raster 2 no-data values (on value per band).
Definition: Blender.h:242
std::auto_ptr< te::gm::Geometry > m_intersectionPtr
The Intersection geometry ( raster 1 indexed coods).
Definition: Blender.h:224
std::vector< unsigned int > m_raster2Bands
Input raster 2 band indexes to use (this vector has the same size as raster1Bands).
Definition: Blender.h:189
bool * m_returnValuePtr
A pointer to the threadreturn value.
Definition: Blender.h:179
unsigned int * m_runningThreadsCounterPtr
a pointer to the running threads counter.
Definition: Blender.h:187
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:182
std::size_t m_r1IntersectionSegmentsPointsSize
Size of m_r1IntersectionSegmentsPoints;.
Definition: Blender.h:226
std::complex< double > m_sumMethodImp_cValue1
Definition: Blender.h:276
InterpolationMethod
Allowed interpolation methods.
Definition: Enums.h:92
double m_euclideanDistanceMethodImp_dist2
Definition: Blender.h:265
No blending performed.
Definition: Blender.h:66
double m_noBlendMethodImp_Point1XProj1
Definition: Blender.h:246
std::complex< double > m_noBlendMethodImp_cValue
Definition: Blender.h:252
double m_euclideanDistanceMethodImp_dist1
Definition: Blender.h:264
bool m_sumMethodImp_PointInsideIntersection
Definition: Blender.h:280
Raster block info.
Definition: Blender.h:160
bool m_enableProgressInterface
Enable progress interface.
Definition: Blender.h:214
bool m_forceRaster1NoDataValue
Use noDataValue as the input raster 1 no-data value (The original rasters no-data values will be igno...
Definition: Blender.h:215
std::auto_ptr< te::rst::Interpolator > m_interp2Ptr
Raster 2 interpolator instance pointer.
Definition: Blender.h:234
double m_euclideanDistanceMethodImp_aux2
Definition: Blender.h:268
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:222
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:237
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:228
te::rst::Raster * m_raster1Ptr
Input raster 1.
Definition: Blender.h:220
unsigned int m_sumMethodImp_IntersectionTileIndexersIdx
Definition: Blender.h:279
URI C++ Library.
Invalid blending method.
Definition: Blender.h:65
boost::ptr_vector< te::rst::TileIndexer > m_intersectionTileIndexers
The Intersection geometry tile indexers( raster 1 indexed coods), one indexer for each intersection p...
Definition: Blender.h:243
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:239
std::vector< double > m_raster1NoDataValues
Raster 1 no-data values (on value per band).
Definition: Blender.h:241
unsigned int m_rasterCols2ProcessBound
Definition: Blender.h:169
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:139
double m_noBlendMethodImp_Point1YProj2
Definition: Blender.h:249
te::rst::RasterSynchronizer * m_sync1Ptr
Raster 1 syncronizer pointer.
Definition: Blender.h:181
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:238
bool m_forceRaster2NoDataValue
Use noDataValue as the input raster 2 no-data value (The original rasters no-data values will be igno...
Definition: Blender.h:216
void getBlendedValues(const double &line, const double &col, double *const values)
Blend a pixel value using the current parameters.
Definition: Blender.h:131
double m_noBlendMethodImp_Point2Col
Definition: Blender.h:251
BlendFunctPtr m_blendFuncPtr
The current blend function.
Definition: Blender.h:219
std::vector< unsigned int > m_raster1Bands
Input raster 1 band indexes to use.
Definition: Blender.h:235
std::size_t m_euclideanDistanceMethodImp_vecIdx
Definition: Blender.h:266
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:73
unsigned int m_blkTotalPixelsNumber
Definition: Blender.h:165
bool m_euclideanDistanceMethodImp_PointInsideIntersection
Definition: Blender.h:270
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:199
unsigned int m_euclideanDistanceMethodImp_BandIdx
Definition: Blender.h:262
Configuration flags for the Raster Processing module of TerraLib.
bool m_forceRaster1NoDataValue
Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignor...
Definition: Blender.h:193
double m_noBlendMethodImp_Point1XProj2
Definition: Blender.h:248
double m_noDataValue
The value returned where there is no pixel data bo blend.
Definition: Blender.h:192
unsigned int m_noBlendMethodImp_BandIdx
Definition: Blender.h:254
te::gm::Point m_sumMethodImp_auxPoint
Definition: Blender.h:273
te::gm::GeometricTransformation * m_geomTransformationPtr
A transformation mapping raster 1 pixels ( te::gm::GTParameters::TiePoint::first ) to raster 2 ( te::...
Definition: Blender.h:229
unsigned int m_rasterRows2ProcessBound
Definition: Blender.h:167
Euclidean distance method.
Definition: Blender.h:67
te::rst::Interpolator::Method m_interpMethod2
The interpolation method to use when reading raster 2 data.
Definition: Blender.h:231
std::auto_ptr< te::rst::Interpolator > m_interp1Ptr
Raster 1 interpolator instance pointer.
Definition: Blender.h:233
double m_noBlendMethodImp_Point2Line
Definition: Blender.h:250
boost::mutex * m_blockProcessedSignalMutexPtr
Mutex used to update the main process progress update.
Definition: Blender.h:185
bool m_forceRaster2NoDataValue
Use noDataValue as the input rasters no-data value (The original rasters no-data values will be ignor...
Definition: Blender.h:194
double m_noBlendMethodImp_Value
Definition: Blender.h:253
BlendMethod m_blendMethod
The blend method to apply.
Definition: Blender.h:190
unsigned int m_sumMethodImp_BandIdx
Definition: Blender.h:278
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:197
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:223
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:217
unsigned int m_firstRasterRow2Process
Definition: Blender.h:166
std::complex< double > m_euclideanDistanceMethodImp_cValue1
Definition: Blender.h:260
unsigned int m_euclideanDistanceMethodImp_IntersectionTileIndexersIdx
Definition: Blender.h:269
double m_euclideanDistanceMethodImp_Point2Line
Definition: Blender.h:258
#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:218
std::vector< unsigned int > m_raster1Bands
Input raster 1 band indexes to use.
Definition: Blender.h:188
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:201
double m_noBlendMethodImp_Point1YProj1
Definition: Blender.h:247
te::gm::Point m_euclideanDistanceMethodImp_auxPoint
Definition: Blender.h:257
std::complex< double > m_euclideanDistanceMethodImp_cValue2
Definition: Blender.h:261
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:198
te::rst::Interpolator::Method m_interpMethod2
The interpolation method to use when reading raster 2 data.
Definition: Blender.h:191
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:225
unsigned int m_firstRasterCol2Process
Definition: Blender.h:168