25 #ifndef __TERRALIB_RP_INTERNAL_FUNCTIONS_H
26 #define __TERRALIB_RP_INTERNAL_FUNCTIONS_H
34 #include "../dataaccess/datasource/DataSource.h"
35 #include "../raster/Raster.h"
36 #include "../raster/RasterFactory.h"
37 #include "../raster/Grid.h"
38 #include "../raster/BandProperty.h"
39 #include "../raster/RasterFactory.h"
40 #include "../raster/Interpolator.h"
41 #include "../raster/Utils.h"
42 #include "../srs/Converter.h"
43 #include "../geometry/LinearRing.h"
44 #include "../geometry/GTParameters.h"
45 #include "../geometry/MultiPoint.h"
46 #include "../geometry/Surface.h"
56 #include <boost/numeric/ublas/matrix.hpp>
57 #include <boost/shared_ptr.hpp>
92 const std::vector< te::rst::BandProperty* >& bandsProperties,
93 const std::string& outDataSetName,
94 const std::string& dataSourceType,
95 RasterHandler& outRasterHandler );
109 const std::vector< te::rst::BandProperty* >& bandsProperties,
110 const std::string& outDataSetName,
112 RasterHandler& outRasterHandler );
126 const std::vector< te::rst::BandProperty* >& bandsProperties,
127 const std::map< std::string, std::string>& rasterInfo,
128 const std::string& rasterType,
129 std::auto_ptr< te::rst::Raster >& outRasterPtr );
141 std::vector< te::rst::BandProperty* > bandsProperties,
142 RasterHandler& outRasterHandler );
155 std::vector< te::rst::BandProperty* > bandsProperties,
156 const std::string& fileName,
157 RasterHandler& outRasterHandler );
170 std::vector< te::rst::BandProperty* > bandsProperties,
171 const std::string& fileName,
172 std::auto_ptr< te::rst::Raster >& outRasterPtr );
186 const std::string& fileName );
211 unsigned int inputVectorSize,
double* outputVector );
223 unsigned int inputVectorSize,
const int outputVectorDataType,
224 void* outputVector );
234 template<
typename MatrixElementT >
236 const bool normalize,
const std::string& fileName )
238 std::map<std::string, std::string> rInfo;
239 rInfo[
"URI"] = fileName;
241 std::vector<te::rst::BandProperty*> bandsProperties;
247 bandsProperties[0]->m_noDataValue = -1.0 * std::numeric_limits<double>::max();
252 std::auto_ptr< te::rst::Raster > outputRasterPtr(
256 unsigned int line = 0;
257 unsigned int col = 0;
260 MatrixElementT matrixValue = 0;
262 MatrixElementT gain = 1.0;
263 MatrixElementT offset = 0.0;
266 MatrixElementT matrixValueMin = std::numeric_limits< MatrixElementT >::max();
267 MatrixElementT matrixValueMax = -1.0 * matrixValueMin;
268 for( line = 0 ; line < nLines ; ++line )
270 for( col = 0 ; col < nCols ; ++col )
272 matrixValue = matrix[ line ][ col ];
273 if( matrixValue < matrixValueMin )
274 matrixValueMin = matrixValue;
275 if( matrixValue > matrixValueMax )
276 matrixValueMax = matrixValue;
280 if( matrixValueMax == matrixValueMin )
287 gain = 255.0 / ( matrixValueMax - matrixValueMin );
288 offset = -1.0 * ( matrixValueMin );
292 const MatrixElementT min0 = 0;
293 const MatrixElementT max255 = 255;
295 for( line = 0 ; line < nLines ; ++line )
297 for( col = 0 ; col < nCols ; ++col )
299 matrixValue = matrix[ line ][ col ];
303 matrixValue += offset;
305 matrixValue = std::max( min0, matrixValue );
306 matrixValue = std::min( max255, matrixValue );
309 outputRasterPtr->setValue( col, line, (
double)matrixValue, 0 );
385 const unsigned int redBandIdx,
const unsigned int greenBandIdx,
386 const unsigned int blueBandIdx,
const double rgbRangeMin,
406 const te::rst::Raster& inputGreenRaster,
const unsigned int greenBandIdx,
407 const te::rst::Raster& inputBlueRaster,
const unsigned int blueBandIdx,
408 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputIHSRaster);
424 const unsigned int intensityBandIdx,
const unsigned int hueBandIdx,
425 const unsigned int saturationBandIdx,
const double rgbRangeMin,
445 const te::rst::Raster& inputSRaster,
const unsigned int saturationBandIdx,
446 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputRGBRaster);
462 const unsigned int redBandIdx,
const unsigned int greenBandIdx,
463 const unsigned int blueBandIdx,
const double rgbRangeMin,
482 const te::rst::Raster& inputGreenRaster,
const unsigned int greenBandIdx,
483 const te::rst::Raster& inputBlueRaster,
const unsigned int blueBandIdx,
484 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputHLSRaster);
499 const unsigned int hueBandIdx,
const unsigned int lightBandIdx,
500 const unsigned int saturationBandIdx,
const double rgbRangeMin,
519 const te::rst::Raster& inputSRaster,
const unsigned int saturationBandIdx,
520 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputRGBRaster);
533 const unsigned int maxThreads,
548 const unsigned int maxThreads,
549 double const *
const meanValuePtr,
550 double& stdDevValue );
567 const unsigned int maxThreads,
568 double const *
const mean1ValuePtr,
569 double const *
const mean2ValuePtr,
570 double& covarianceValue );
586 const std::vector< unsigned int >& inputRasterBands,
587 boost::numeric::ublas::matrix< double >& pcaMatrix,
589 const std::vector< unsigned int >& pcaRasterBands,
590 const unsigned int maxThreads );
605 const boost::numeric::ublas::matrix< double >& pcaMatrix,
607 const std::vector< unsigned int >& outputRasterBands,
608 const unsigned int maxThreads );
624 const std::vector< unsigned int >& inputRasterBands,
625 const boost::numeric::ublas::matrix< double >& remapMatrix,
627 const std::vector< unsigned int >& outputRasterBands,
628 const unsigned int maxThreads );
642 const std::vector< unsigned int >& inputRasterBands,
643 const std::vector< std::map<std::string, std::string> > & outputRastersInfos,
644 const std::string& outputDataSourceType,
645 std::vector< boost::shared_ptr< te::rst::Raster > > & outputRastersPtrs );
661 const std::vector< unsigned int >& inputRasterBands,
663 const std::map<std::string, std::string>& outputRasterInfo,
664 const std::string& outputDataSourceType,
665 std::auto_ptr< te::rst::Raster >& outputRasterPtr );
693 TERPEXPORT boost::numeric::ublas::matrix< double >
710 const std::vector< unsigned int >& inputRasterBands,
712 const unsigned int levelsNumber,
713 const boost::numeric::ublas::matrix< double >& filter );
729 const unsigned int levelsNumber,
731 const std::vector< unsigned int >& outputRasterBands );
751 const std::vector< unsigned int >& inputRasterBands,
753 const unsigned int firstRow,
754 const unsigned int firstColumn,
755 const unsigned int height,
756 const unsigned int width,
757 const unsigned int newheight,
758 const unsigned int newwidth,
759 const std::map<std::string, std::string>& rinfo,
760 const std::string& dataSourceType,
761 std::auto_ptr< te::rst::Raster >& resampledRasterPtr );
769 template<
typename ContainerT >
771 const bool useTPSecondCoordPair )
773 if( tiePoints.size() < 3 )
781 typename ContainerT::const_iterator it =
783 const typename ContainerT::const_iterator itE =
788 if( useTPSecondCoordPair )
796 std::auto_ptr< te::gm::Geometry > convexHullPolPtr( points.
convexHull() );
798 if( dynamic_cast< te::gm::Surface* >( convexHullPolPtr.get() ) )
815 const double paletteSize,
816 const bool randomize,
817 std::vector< te::rst::BandProperty::ColorEntry >& palette );
836 const unsigned int inputRasterBand,
837 const bool createPaletteRaster,
838 const unsigned int slicesNumber,
839 const bool eqHistogram,
840 const std::map< std::string, std::string >& rasterInfo,
841 const std::string& rasterType,
842 const bool enableProgress,
843 std::vector< te::rst::BandProperty::ColorEntry >
const *
const palettePtr,
844 std::auto_ptr< te::rst::Raster >& outRasterPtr );
849 #endif // __TERRALIB_RP_INTERNAL_FUNCTIONS_H
TERPEXPORT bool GetMeanValue(const te::rst::Band &band, const unsigned int maxThreads, double &meanValue)
Get the mean of band pixel values.
TERPEXPORT double GetDigitalNumberBandMax(std::string bandName)
Returns the maximum digital number of a given sensor/band.
Index into a lookup table.
A raster band description.
virtual Geometry * convexHull() const
This method calculates the Convex Hull of a geometry.
double GetTPConvexHullArea(const ContainerT &tiePoints, const bool useTPSecondCoordPair)
Returns the tie points converx hull area.
TERPEXPORT 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.
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)...
TERPEXPORT bool ComposeBands(te::rp::FeederConstRaster &feeder, const std::vector< unsigned int > &inputRasterBands, const te::rst::Interpolator::Method &interpMethod, const std::map< std::string, std::string > &outputRasterInfo, const std::string &outputDataSourceType, std::auto_ptr< te::rst::Raster > &outputRasterPtr)
Compose a set of bands into one multi-band raster.
bool TERPEXPORT CreateNewMemRaster(const te::rst::Grid &rasterGrid, std::vector< te::rst::BandProperty * > bandsProperties, RasterHandler &outRasterHandler)
Create a new raster into a new memory datasource.
TERPEXPORT std::vector< std::string > GetBandNames()
Returns a vector os with band's names.
TERASTEREXPORT void GetDataTypeRanges(const int &dataType, double &min, double &max)
Return the values range of a given data type.
TERPEXPORT std::pair< double, double > GetDigitalNumberBandInfo(std::string bandName)
Returns the maximun and minimum digital numbers of a given sensor/band.
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
TERPEXPORT bool DirectPrincipalComponents(const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, boost::numeric::ublas::matrix< double > &pcaMatrix, te::rst::Raster &pcaRaster, const std::vector< unsigned int > &pcaRasterBands, const unsigned int maxThreads)
Generate all principal components from the given input raster.
TERPEXPORT bool DecomposeBands(const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< std::map< std::string, std::string > > &outputRastersInfos, const std::string &outputDataSourceType, std::vector< boost::shared_ptr< te::rst::Raster > > &outputRastersPtrs)
Decompose a multi-band raster into a set of one-band rasters.
TERPEXPORT double GetDigitalNumberBandMin(std::string bandName)
Returns the minimum digital number of a given sensor/band.
InterpolationMethod
Allowed interpolation methods.
TERPEXPORT double GetSpectralBandMax(std::string bandName)
Returns the maximum reflectance value of a given sensor/band.
TERPEXPORT 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 std::vector< unsigned int > &outputRasterBands, const unsigned int maxThreads)
Remap pixel values using a remap function matrix.
TERPEXPORT std::pair< double, double > GetSpectralBandInfo(std::string bandName)
Returns the maximun and minimum reflectance values of a given sensor/band.
TERPEXPORT 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.
#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...
TERPEXPORT bool ConvertHLS2RGB(const te::rst::Raster &inputHLSRaster, const unsigned int hueBandIdx, const unsigned int lightBandIdx, const unsigned int saturationBandIdx, const double rgbRangeMin, const double rgbRangeMax, te::rst::Raster &outputRGBRaster)
HLS to RGB conversion.
bool CreateRasterFileFromMatrix(const te::rp::Matrix< MatrixElementT > &matrix, const bool normalize, const std::string &fileName)
Create a tiff file from a matrix.
bool TERPEXPORT Copy2DiskRaster(const te::rst::Raster &inputRaster, const std::string &fileName)
Create a new raster into a GDAL datasource.
A LinearRing is a LineString that is both closed and simple.
MultiPoint is a GeometryCollection whose elements are restricted to points.
A point with x and y coordinate values.
TERPEXPORT bool NormalizeRaster(te::rst::Raster &inputRaster, double nmin=0.0, double nmax=255.0)
Normalizes one raster in a given interval.
An abstract class for raster data strucutures.
unsigned int getColumnsNumber() const
The number of current matrix columns.
TERPEXPORT bool InverseWaveletAtrous(const te::rst::Raster &waveletRaster, const unsigned int levelsNumber, te::rst::Raster &outputRaster, const std::vector< unsigned int > &outputRasterBands)
Regenerate the original raster from its wavelets planes.
WaveletAtrousFilterType
Wavelet Atrous Filter types.
TERPEXPORT bool DirectWaveletAtrous(const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, te::rst::Raster &waveletRaster, const unsigned int levelsNumber, const boost::numeric::ublas::matrix< double > &filter)
Generate all wavelet planes from the given input raster.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
void TERPEXPORT Convert2DoublesVector(void *inputVector, const int inputVectorDataType, unsigned int inputVectorSize, double *outputVector)
Convert vector elements.
A raster band description.
TERPEXPORT bool GetDetailedExtent(const te::rst::Grid &grid, te::gm::LinearRing &detailedExtent)
Create a datailed extent from the given grid.
TERPEXPORT void CreateFixedStepPalette(const double paletteSize, const bool randomize, std::vector< te::rst::BandProperty::ColorEntry > &palette)
Create a fixed step sequential color palette.
TERPEXPORT bool ConvertRGB2HLS(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 &outputHLSRaster)
RGB to HLS conversion.
bool TERPEXPORT 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.
TERPEXPORT boost::numeric::ublas::matrix< double > CreateWaveletAtrousFilter(const WaveletAtrousFilterType &filterType)
Create a Wavele Atrous Filter.
TERPEXPORT 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.
Configuration flags for the Raster Processing module of TerraLib.
TERPEXPORT double GetSpectralBandMin(std::string bandName)
Returns the minimum reflectance value of a given sensor/band.
Feeder from a input rasters.
void add(Geometry *g)
It adds the geometry into the collection.
A generic template matrix.
TERPEXPORT bool GetIndexedDetailedExtent(const te::rst::Grid &grid, te::gm::LinearRing &indexedDetailedExtent)
Create a indexed (lines,columns) datailed extent from the given grid.
TERPEXPORT bool InversePrincipalComponents(const te::rst::Raster &pcaRaster, const boost::numeric::ublas::matrix< double > &pcaMatrix, te::rst::Raster &outputRaster, const std::vector< unsigned int > &outputRasterBands, const unsigned int maxThreads)
Regenerate the original raster from its principal components.
TERPEXPORT bool RasterResample(const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const te::rst::Interpolator::Method interpMethod, const unsigned int firstRow, const unsigned int firstColumn, const unsigned int height, const unsigned int width, const unsigned int newheight, const unsigned int newwidth, const std::map< std::string, std::string > &rinfo, const std::string &dataSourceType, std::auto_ptr< te::rst::Raster > &resampledRasterPtr)
Resample a subset of the raster, given a box.
bool TERPEXPORT 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.
static Raster * make()
It creates and returns an empty raster with default raster driver.
A rectified grid is the spatial support for raster data.
unsigned int getLinesNumber() const
The number of current matrix lines.
TERPEXPORT 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.
TERPEXPORT bool RasterSlicing(const te::rst::Raster &inputRaster, const unsigned int inputRasterBand, const bool createPaletteRaster, const unsigned int slicesNumber, const bool eqHistogram, const std::map< std::string, std::string > &rasterInfo, const std::string &rasterType, const bool enableProgress, std::vector< te::rst::BandProperty::ColorEntry > const *const palettePtr, std::auto_ptr< te::rst::Raster > &outRasterPtr)
Generate all wavelet planes from the given input raster.
void TERPEXPORT ConvertDoublesVector(double *inputVector, unsigned int inputVectorSize, const int outputVectorDataType, void *outputVector)
Convert a doubles vector.
Surface is an abstract class that represents a 2-dimensional geometric objects.