All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Functions.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/Functions.h
22  \brief Raster Processing functions.
23  */
24 
25 #ifndef __TERRALIB_RP_INTERNAL_FUNCTIONS_H
26 #define __TERRALIB_RP_INTERNAL_FUNCTIONS_H
27 
28 #include "Config.h"
29 
30 #include "Matrix.h"
31 #include "Macros.h"
32 #include "../dataaccess/datasource/DataSource.h"
33 #include "../raster/Raster.h"
34 #include "../raster/RasterFactory.h"
35 #include "../raster/Grid.h"
36 #include "../raster/BandProperty.h"
37 #include "../raster/RasterFactory.h"
38 #include "../raster/Utils.h"
39 
40 // STL
41 #include <memory>
42 #include <map>
43 #include <vector>
44 #include <string>
45 #include <limits>
46 
47 // Boost
48 #include <boost/numeric/ublas/matrix.hpp>
49 
50 namespace te
51 {
52  namespace rst
53  {
54  class BandProperty;
55  class Grid;
56  }
57 
58  namespace rp
59  {
60  class RasterHandler;
61 
62  /*!
63  \brief Create a new raster into the givem data source.
64  \param rasterGrid The template grid used to create the output raster.
65  \param bandsProperties The template band properties used to create the output raster.
66  \param outDataSetName The data set name to give to the created data set.
67  \param dataSourceType The data source type string (i.e. GDAL, MEM.).
68  \param outRasterHandler The created raster handler.
69  \return true if OK, false on errors.
70  \note All bandsProperties pointed objects will be acquired by this function and must not be deleted.
71  \ingroup rp_func
72  */
73  bool TERPEXPORT CreateNewRaster( const te::rst::Grid& rasterGrid,
74  const std::vector< te::rst::BandProperty* >& bandsProperties,
75  const std::string& outDataSetName,
76  const std::string& dataSourceType,
77  RasterHandler& outRasterHandler );
78 
79  /*!
80  \brief Create a new raster into the givem data source.
81  \param rasterGrid The template grid used to create the output raster.
82  \param bandsProperties The template band properties used to create the output raster.
83  \param outDataSetName The data set name to give to the created data set.
84  \param outDataSource The data source to use when creating the output data set.
85  \param outRasterHandler The created raster handler.
86  \return true if OK, false on errors.
87  \note All bandsProperties pointed objects will be acquired by this function and must not be deleted.
88  \ingroup rp_func
89  */
90  bool TERPEXPORT CreateNewRaster( const te::rst::Grid& rasterGrid,
91  const std::vector< te::rst::BandProperty* >& bandsProperties,
92  const std::string& outDataSetName,
93  te::da::DataSource& outDataSource,
94  RasterHandler& outRasterHandler );
95 
96  /*!
97  \brief Create a new raster into a new memory datasource.
98  \param rasterGrid The template grid used to create the output raster.
99  \param bandsProperties The template band properties used to create the output raster.
100  \param outRasterHandler The created raster handler.
101  \return true if OK, false on errors.
102  \note All bandsProperties pointed objects will be acquired by this function and must not be deleted.
103  \ingroup rp_func
104  */
105  bool TERPEXPORT CreateNewMemRaster( const te::rst::Grid& rasterGrid,
106  std::vector< te::rst::BandProperty* > bandsProperties,
107  RasterHandler& outRasterHandler );
108 
109  /*!
110  \brief Create a new raster into a GDAL datasource.
111  \param rasterGrid The template grid used to create the output raster.
112  \param bandsProperties The template band properties used to create the output raster.
113  \param fileName The output tif file name.
114  \param outRasterHandler The created raster handler.
115  \return true if OK, false on errors.
116  \note All bandsProperties pointed objects will be acquired by this function and must not be deleted.
117  \ingroup rp_func
118  */
119  bool TERPEXPORT CreateNewGdalRaster( const te::rst::Grid& rasterGrid,
120  std::vector< te::rst::BandProperty* > bandsProperties,
121  const std::string& fileName,
122  RasterHandler& outRasterHandler );
123 
124  /*!
125  \brief Create a new raster into a GDAL datasource.
126  \param rasterGrid The template grid used to create the output raster.
127  \param bandsProperties The template band properties used to create the output raster.
128  \param fileName The output tif file name.
129  \param outRasterHandler The created raster handler.
130  \return true if OK, false on errors.
131  \note All bandsProperties pointed objects will be acquired by this function and must not be deleted.
132  \ingroup rp_func
133  */
135  const te::rst::Raster& inputRaster,
136  const std::string& fileName );
137 
138  /*!
139  \brief Returns the real data type range (all values that can be represented by the given data type).
140  \param dataType The data type.
141  \param min The minimum value.
142  \param max The maximum value.
143  \note The types are listed in terralib/datatype/DataTypes.h
144  \ingroup rp_func
145  */
146  inline void TERPEXPORT GetDataTypeRange( const int dataType, double& min, double& max )
147  {
148  te::rst::GetDataTypeRanges( dataType, min, max );
149  }
150 
151  /*!
152  \brief Convert vector elements.
153  \param inputVector Input vector.
154  \param inputVectorDataType Input vector data type.
155  \param inputVectorSize The numer of input vector elements.
156  \param outputVector A pré-allocated output vector.
157  \note The types are listed in terralib/datatype/DataTypes.h
158  \ingroup rp_func
159  */
160  void TERPEXPORT Convert2DoublesVector( void* inputVector, const int inputVectorDataType,
161  unsigned int inputVectorSize, double* outputVector );
162 
163  /*!
164  \brief Convert a doubles vector.
165  \param inputVector Input vector.
166  \param inputVectorSize The numer of input vector elements.
167  \param inputVectorDataType Input vector data type.
168  \param outputVector A pré-allocated output vector.
169  \note The types are listed in terralib/datatype/DataTypes.h
170  \ingroup rp_func
171  */
172  void TERPEXPORT ConvertDoublesVector( double* inputVector,
173  unsigned int inputVectorSize, const int outputVectorDataType,
174  void* outputVector );
175 
176  /*!
177  \brief Create a tiff file from a matrix.
178  \param matrix The matrix.
179  \param normalize Enable/disable pixel normalization (8bit);
180  \param tifFileName Tif file name.
181  \param return true if OK, false on errors.
182  \ingroup rp_func
183  */
184  template< typename MatrixElementT >
186  const bool normalize, const std::string& fileName )
187  {
188  std::map<std::string, std::string> rInfo;
189  rInfo["URI"] = fileName;
190 
191  std::vector<te::rst::BandProperty*> bandsProperties;
192  if( normalize )
193  bandsProperties.push_back(new te::rst::BandProperty( 0, te::dt::UCHAR_TYPE, "" ));
194  else
195  bandsProperties.push_back(new te::rst::BandProperty( 0, te::dt::DOUBLE_TYPE, "" ));
196  bandsProperties[0]->m_colorInterp = te::rst::GrayIdxCInt;
197  bandsProperties[0]->m_noDataValue = -1.0 * std::numeric_limits<double>::max();
198 
199  te::rst::Grid* newgrid = new te::rst::Grid( matrix.getColumnsNumber(),
200  matrix.getLinesNumber(), 0, -1 );
201 
202  std::auto_ptr< te::rst::Raster > outputRasterPtr(
203  te::rst::RasterFactory::make( "GDAL", newgrid, bandsProperties, rInfo, 0, 0));
204  TERP_TRUE_OR_RETURN_FALSE( outputRasterPtr.get(), "Output raster creation error");
205 
206  unsigned int line = 0;
207  unsigned int col = 0;
208  const unsigned int nLines = matrix.getLinesNumber();
209  const unsigned int nCols = matrix.getColumnsNumber();
210  MatrixElementT matrixValue = 0;
211 
212  MatrixElementT gain = 1.0;
213  MatrixElementT offset = 0.0;
214  if( normalize )
215  {
216  MatrixElementT matrixValueMin = std::numeric_limits< MatrixElementT >::max();
217  MatrixElementT matrixValueMax = -1.0 * matrixValueMin;
218  for( line = 0 ; line < nLines ; ++line )
219  {
220  for( col = 0 ; col < nCols ; ++col )
221  {
222  matrixValue = matrix[ line ][ col ];
223  if( matrixValue < matrixValueMin )
224  matrixValueMin = matrixValue;
225  if( matrixValue > matrixValueMax )
226  matrixValueMax = matrixValue;
227  }
228  }
229 
230  if( matrixValueMax == matrixValueMin )
231  {
232  gain = 0.0;
233  offset = 0.0;
234  }
235  else
236  {
237  gain = 255.0 / ( matrixValueMax - matrixValueMin );
238  offset = -1.0 * ( matrixValueMin );
239  }
240  }
241 
242  const MatrixElementT min0 = 0;
243  const MatrixElementT max255 = 255;
244 
245  for( line = 0 ; line < nLines ; ++line )
246  {
247  for( col = 0 ; col < nCols ; ++col )
248  {
249  matrixValue = matrix[ line ][ col ];
250 
251  if( normalize )
252  {
253  matrixValue += offset;
254  matrixValue *= gain;
255  matrixValue = std::max( min0, matrixValue );
256  matrixValue = std::min( max255, matrixValue );
257  }
258 
259  outputRasterPtr->setValue( col, line, (double)matrixValue, 0 );
260  }
261  }
262 
263  return true;
264  }
265 
266  /*!
267  \brief Returns a vector os with band's names.
268  \ingroup rp_func
269  */
270  TERPEXPORT std::vector<std::string> GetBandNames();
271 
272  /*!
273  \brief Returns the maximun and minimum reflectance values of a given sensor/band.
274  \ingroup rp_func
275  */
276  TERPEXPORT std::pair<double, double> GetSpectralBandInfo(std::string bandName);
277 
278  /*!
279  \brief Returns the minimum reflectance value of a given sensor/band.
280  \ingroup rp_func
281  */
282  TERPEXPORT double GetSpectralBandMin(std::string bandName);
283 
284  /*!
285  \brief Returns the maximum reflectance value of a given sensor/band.
286  \ingroup rp_func
287  */
288  TERPEXPORT double GetSpectralBandMax(std::string bandName);
289 
290  /*!
291  \brief Returns the maximun and minimum digital numbers of a given sensor/band.
292  \ingroup rp_func
293  */
294  TERPEXPORT std::pair<double, double> GetDigitalNumberBandInfo(std::string bandName);
295 
296  /*!
297  \brief Returns the maximum digital number of a given sensor/band.
298  \ingroup rp_func
299  */
300  TERPEXPORT double GetDigitalNumberBandMax(std::string bandName);
301 
302  /*!
303  \brief Normalizes one raster in a given interval.
304 
305  \param inputRaster The given raster.
306  \param nmin The new minimum value (default = 0.0).
307  \param nmax The new maximum value (default = 255.0).
308 
309  \return true if normalization occurs and false otherwise.
310  \ingroup rp_func
311  */
312  TERPEXPORT bool NormalizeRaster(te::rst::Raster& inputRaster, double nmin = 0.0, double nmax = 255.0);
313 
314  /*!
315  \brief Creates a vector of random positions (points) inside the raster.
316 
317  \param inputRaster The given raster.
318  \param numberOfPoints The number of random positions to be created (default = 1000).
319 
320  \return A vector of random positions (points).
321  \ingroup rp_func
322  */
323  TERPEXPORT std::vector<te::gm::Point*> GetRandomPointsInRaster(const te::rst::Raster& inputRaster, unsigned int numberOfPoints = 1000);
324 
325  /*!
326  \brief RGB to IHS conversion.
327  \param inputRGBRaster The input raster.
328  \param redBandIdx The red band index.
329  \param greenBandIdx The red band index.
330  \param blueBandIdx The red band index.
331  \param rgbRangeMin The minimum RGB value.
332  \param rgbRangeMax The maximum RGB value.
333  \param outputIHSRaster An output pré-initiated raster (with the same dimensions of inputRGBRaster) where the IHS data will be written.
334  \return true if OK, false on errors.
335  \note The outputIHSRaster mas have a float or double data type.
336  \note IHS data with the following channels ranges: I:[0,1] H:[0,2pi] (radians) S:[0,1].
337  \ingroup rp_func
338  */
339  TERPEXPORT bool ConvertRGB2IHS( const te::rst::Raster& inputRGBRaster,
340  const unsigned int redBandIdx, const unsigned int greenBandIdx,
341  const unsigned int blueBandIdx, const double rgbRangeMin,
342  const double rgbRangeMax, te::rst::Raster& outputIHSRaster );
343 
344  /*!
345  \brief IHS to RGB conversion.
346  \param inputIHSRaster The input raster.
347  \param intensityBandIdx The intensity band index.
348  \param hueBandIdx The hue band index.
349  \param saturationBandIdx The saturation band index.
350  \param rgbRangeMin The minimum RGB value.
351  \param rgbRangeMax The maximum RGB value.
352  \param outputRGBRaster An output pré-initiated raster (with the same dimensions of inputIHSRaster) where the RGB data will be written.
353  \return true if OK, false on errors.
354  \note IHS data with the following channels ranges: I:[0,1] H:[0,2pi] (radians) S:[0,1].
355  \ingroup rp_func
356  */
357  TERPEXPORT bool ConvertIHS2RGB( const te::rst::Raster& inputIHSRaster,
358  const unsigned int intensityBandIdx, const unsigned int hueBandIdx,
359  const unsigned int saturationBandIdx, const double rgbRangeMin,
360  const double rgbRangeMax, te::rst::Raster& outputRGBRaster );
361 
362  /*!
363  \brief Get the mean of band pixel values.
364  \param band The input raster band.
365  \param maxThreads The maximum number of threads to use (0-auto, 1-single thread used).
366  \param meanValue The calculated mean value.
367  \return true if OK, false on errors.
368  \note Optimized for rasters where the used bands have the same blocking scheme.
369  */
370  TERPEXPORT bool GetMeanValue(
371  const te::rst::Band& band,
372  const unsigned int maxThreads,
373  double& meanValue );
374 
375  /*!
376  \brief Get the standard deviation of band pixel values.
377  \param band The input raster band.
378  \param maxThreads The maximum number of threads to use (0-auto, 1-single thread used).
379  \param meanValuePtr A pointer to a pre-calculated band mean value or zero if it does not exist.
380  \param stdDevValue The calculated standard deviation value.
381  \return true if OK, false on errors.
382  \note Optimized for rasters where the used bands have the same blocking scheme.
383  */
385  const te::rst::Band& band,
386  const unsigned int maxThreads,
387  double const * const meanValuePtr,
388  double& stdDevValue );
389 
390  /*!
391  \brief Get the covariance of band pixel values.
392  \param band1 The input band 1.
393  \param band2 The input band 2.
394  \param maxThreads The maximum number of threads to use (0-auto, 1-single thread used).
395  \param mean1ValuePtr A pointer to a pre-calculated band1 mean value or zero if it does not exist.
396  \param mean2ValuePtr A pointer to a pre-calculated band2 mean value or zero if it does not exist.
397  \param covarianceValue The calculated covariance value.
398  \return true if OK, false on errors.
399  \note Optimized for rasters where the used bands have the same blocking scheme.
400  \ingroup rp_func
401  */
403  const te::rst::Band& band1,
404  const te::rst::Band& band2,
405  const unsigned int maxThreads,
406  double const * const mean1ValuePtr,
407  double const * const mean2ValuePtr,
408  double& covarianceValue );
409 
410  /*!
411  \brief Generate all principal components from the given input raster.
412  \param inputRaster Input raster.
413  \param inputRasterBands Input raster bands.
414  \param pcaMatrix The matrix generated over the principal components process.
415  \param pcaRaster The pré-initiated output PCA raster (with the same dimensions of inputRaster).
416  \param maxThreads The maximum number of threads to use (0-auto, 1-single thread used).
417  \return true if OK, false on errors.
418  \note Optimized for rasters where the used bands have the same blocking scheme.
419  \ingroup rp_func
420  */
422  const te::rst::Raster& inputRaster,
423  const std::vector< unsigned int >& inputRasterBands,
424  boost::numeric::ublas::matrix< double >& pcaMatrix,
425  te::rst::Raster& pcaRaster,
426  const unsigned int maxThreads );
427 
428  /*!
429  \brief Regenerate the original raster from its principal components.
430  \param pcaRaster The principal components raster (with the same dimensions of outputRaster).
431  \param pcaMatrix The matrix generated by the direct principal components process.
432  \param outputRaster The regenerated output raster (with the same dimentions.
433  \param maxThreads The maximum number of threads to use (0-auto, 1-single thread used).
434  \return true if OK, false on errors.
435  \note Optimized for rasters where the used bands have the same blocking scheme.
436  \ingroup rp_func
437  */
439  const te::rst::Raster& pcaRaster,
440  const boost::numeric::ublas::matrix< double >& pcaMatrix,
441  te::rst::Raster& outputRaster,
442  const unsigned int maxThreads );
443 
444  /*!
445  \brief Remap pixel values using a remap function matrix.
446  \param inputRaster Input raster.
447  \param inputRasterBands Input raster bands.
448  \param remapMatrix The remap function matrix.
449  \param outputRaster The pré-initiated output raster (with the same dimentions of inputRaster).
450  \param maxThreads The maximum number of threads to use (0-auto, 1-single thread used).
451  \return true if OK, false on errors.
452  \note Optimized for rasters where the used bands have the same blocking scheme.
453  \ingroup rp_func
454  */
455  TERPEXPORT bool RemapValues(
456  const te::rst::Raster& inputRaster,
457  const std::vector< unsigned int >& inputRasterBands,
458  const boost::numeric::ublas::matrix< double >& remapMatrix,
459  te::rst::Raster& outputRaster,
460  const unsigned int maxThreads );
461 
462  } // end namespace rp
463 } // end namespace te
464 
465 #endif // __TERRALIB_RP_INTERNAL_FUNCTIONS_H
466 
double GetDigitalNumberBandMax(std::string bandName)
Returns the maximum digital number of a given sensor/band.
Definition: Functions.cpp:697
TERASTEREXPORT void GetDataTypeRanges(const int &dataType, double &min, double &max)
Return the values range of a given data type.
Definition: Utils.cpp:331
Index into a lookup table.
Definition: Enums.h:57
A raster band description.
Definition: BandProperty.h:61
bool GetMeanValue(const te::rst::Band &band, const unsigned int maxThreads, double &meanValue)
Get the mean of band pixel values.
Definition: Functions.cpp:1106
bool ConvertIHS2RGB(const te::rst::Raster &inputIHSRaster, const unsigned int intensityBandIdx, const unsigned int hueBandIdx, const unsigned int saturationBandIdx, const double rgbRangeMin, const double rgbRangeMax, te::rst::Raster &outputRGBRaster)
IHS to RGB conversion.
Definition: Functions.cpp:893
void TERPEXPORT GetDataTypeRange(const int dataType, double &min, double &max)
Returns the real data type range (all values that can be represented by the given data type)...
Definition: Functions.h:146
std::vector< std::string > GetBandNames()
Returns a vector os with band's names.
Definition: Functions.cpp:557
bool CreateNewMemRaster(const te::rst::Grid &rasterGrid, std::vector< te::rst::BandProperty * > bandsProperties, RasterHandler &outRasterHandler)
Create a new raster into a new memory datasource.
Definition: Functions.cpp:225
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
Definition: DataSource.h:118
double GetSpectralBandMax(std::string bandName)
Returns the maximum reflectance value of a given sensor/band.
Definition: Functions.cpp:647
bool ConvertRGB2IHS(const te::rst::Raster &inputRGBRaster, const unsigned int redBandIdx, const unsigned int greenBandIdx, const unsigned int blueBandIdx, const double rgbRangeMin, const double rgbRangeMax, te::rst::Raster &outputIHSRaster)
RGB to IHS conversion.
Definition: Functions.cpp:765
#define TERP_TRUE_OR_RETURN_FALSE(value, message)
Checks if value is true. For false values a warning message will be logged and a return of context wi...
Definition: Macros.h:183
bool CreateRasterFileFromMatrix(const te::rp::Matrix< MatrixElementT > &matrix, const bool normalize, const std::string &fileName)
Create a tiff file from a matrix.
Definition: Functions.h:185
bool TERPEXPORT Copy2DiskRaster(const te::rst::Raster &inputRaster, const std::string &fileName)
Create a new raster into a GDAL datasource.
Definition: Functions.cpp:282
bool NormalizeRaster(te::rst::Raster &inraster, double nmin, double nmax)
Normalizes one raster in a given interval.
Definition: Functions.cpp:702
An abstract class for raster data strucutures.
Definition: Raster.h:71
bool GetStdDevValue(const te::rst::Band &band, const unsigned int maxThreads, double const *const meanValuePtr, double &stdDevValue)
Get the standard deviation of band pixel values.
Definition: Functions.cpp:1231
unsigned int getColumnsNumber() const
The number of current matrix columns.
Definition: Matrix.h:678
std::pair< double, double > GetDigitalNumberBandInfo(std::string bandName)
Returns the maximun and minimum digital numbers of a given sensor/band.
Definition: Functions.cpp:652
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:111
void Convert2DoublesVector(void *inputVector, const int inputVectorDataType, unsigned int inputVectorSize, double *outputVector)
Convert vector elements.
Definition: Functions.cpp:332
bool DirectPrincipalComponents(const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, boost::numeric::ublas::matrix< double > &pcaMatrix, te::rst::Raster &pcaRaster, const unsigned int maxThreads)
Generate all principal components from the given input raster.
Definition: Functions.cpp:1524
A raster band description.
Definition: Band.h:63
Generic template matrix.
std::vector< te::gm::Point * > GetRandomPointsInRaster(const te::rst::Raster &inputRaster, unsigned int numberOfPoints)
Creates a vector of random positions (points) inside the raster.
Definition: Functions.cpp:746
bool CreateNewRaster(const te::rst::Grid &rasterGrid, const std::vector< te::rst::BandProperty * > &bandsProperties, const std::string &outDataSetName, const std::string &dataSourceType, RasterHandler &outRasterHandler)
Create a new raster into the givem data source.
Definition: Functions.cpp:120
bool GetCovarianceValue(const te::rst::Band &band1, const te::rst::Band &band2, const unsigned int maxThreads, double const *const mean1ValuePtr, double const *const mean2ValuePtr, double &covarianceValue)
Get the covariance of band pixel values.
Definition: Functions.cpp:1377
Configuration flags for the Raster Processing module of TerraLib.
double GetSpectralBandMin(std::string bandName)
Returns the minimum reflectance value of a given sensor/band.
Definition: Functions.cpp:642
A generic template matrix.
Definition: Matrix.h:51
static Raster * make()
It creates and returns an empty raster with default raster driver.
bool InversePrincipalComponents(const te::rst::Raster &pcaRaster, const boost::numeric::ublas::matrix< double > &pcaMatrix, te::rst::Raster &outputRaster, const unsigned int maxThreads)
Regenerate the original raster from its principal components.
Definition: Functions.cpp:1612
bool CreateNewGdalRaster(const te::rst::Grid &rasterGrid, std::vector< te::rst::BandProperty * > bandsProperties, const std::string &fileName, RasterHandler &outRasterHandler)
Create a new raster into a GDAL datasource.
Definition: Functions.cpp:236
std::pair< double, double > GetSpectralBandInfo(std::string bandName)
Returns the maximun and minimum reflectance values of a given sensor/band.
Definition: Functions.cpp:597
A rectified grid is the spatial support for raster data.
Definition: Grid.h:68
unsigned int getLinesNumber() const
The number of current matrix lines.
Definition: Matrix.h:671
bool RemapValues(const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const boost::numeric::ublas::matrix< double > &remapMatrix, te::rst::Raster &outputRaster, const unsigned int maxThreads)
Remap pixel values using a remap function matrix.
Definition: Functions.cpp:1801
void ConvertDoublesVector(double *inputVector, unsigned int inputVectorSize, const int outputVectorDataType, void *outputVector)
Convert a doubles vector.
Definition: Functions.cpp:444