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> 111 const std::vector< te::rst::BandProperty* >& bandsProperties,
112 const std::string& outDataSetName,
113 const std::string& dataSourceType,
128 const std::vector< te::rst::BandProperty* >& bandsProperties,
129 const std::string& outDataSetName,
145 const std::vector< te::rst::BandProperty* >& bandsProperties,
146 const std::map< std::string, std::string>& rasterInfo,
147 const std::string& rasterType,
148 std::unique_ptr< te::rst::Raster >& outRasterPtr );
160 std::vector< te::rst::BandProperty* > bandsProperties,
174 std::vector< te::rst::BandProperty* > bandsProperties,
175 const std::string& fileName,
189 std::vector< te::rst::BandProperty* > bandsProperties,
190 const std::string& fileName,
191 std::unique_ptr< te::rst::Raster >& outRasterPtr );
205 const std::string& fileName );
230 unsigned int inputVectorSize,
double* outputVector );
242 unsigned int inputVectorSize,
const int outputVectorDataType,
243 void* outputVector );
253 template<
typename MatrixElementT >
255 const bool normalize,
const std::string& fileName )
257 std::map<std::string, std::string> rInfo;
258 rInfo[
"URI"] = fileName;
260 std::vector<te::rst::BandProperty*> bandsProperties;
266 bandsProperties[0]->m_noDataValue = -1.0 * std::numeric_limits<double>::max();
271 std::unique_ptr< te::rst::Raster > outputRasterPtr(
275 unsigned int line = 0;
276 unsigned int col = 0;
279 MatrixElementT matrixValue = 0;
281 MatrixElementT gain = 1.0;
282 MatrixElementT offset = 0.0;
285 MatrixElementT matrixValueMin = std::numeric_limits< MatrixElementT >::max();
286 MatrixElementT matrixValueMax = -1.0 * matrixValueMin;
289 for( col = 0 ; col <
nCols ; ++
col )
291 matrixValue = matrix[
line ][
col ];
292 if( matrixValue < matrixValueMin )
293 matrixValueMin = matrixValue;
294 if( matrixValue > matrixValueMax )
295 matrixValueMax = matrixValue;
299 if( matrixValueMax == matrixValueMin )
306 gain = 255.0 / ( matrixValueMax - matrixValueMin );
307 offset = -1.0 * ( matrixValueMin );
311 const MatrixElementT min0 = 0;
312 const MatrixElementT max255 = 255;
316 for( col = 0 ; col <
nCols ; ++
col )
318 matrixValue = matrix[
line ][
col ];
322 matrixValue += offset;
324 matrixValue = std::max( min0, matrixValue );
325 matrixValue = std::min( max255, matrixValue );
328 outputRasterPtr->setValue( col, line, static_cast<double>(matrixValue), 0 );
432 const unsigned int redBandIdx,
const unsigned int greenBandIdx,
433 const unsigned int blueBandIdx,
const double rgbRangeMin,
453 const te::rst::Raster& inputGreenRaster,
const unsigned int greenBandIdx,
454 const te::rst::Raster& inputBlueRaster,
const unsigned int blueBandIdx,
455 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputIHSRaster);
471 const unsigned int intensityBandIdx,
const unsigned int hueBandIdx,
472 const unsigned int saturationBandIdx,
const double rgbRangeMin,
492 const te::rst::Raster& inputSRaster,
const unsigned int saturationBandIdx,
493 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputRGBRaster);
509 const unsigned int redBandIdx,
const unsigned int greenBandIdx,
510 const unsigned int blueBandIdx,
const double rgbRangeMin,
529 const te::rst::Raster& inputGreenRaster,
const unsigned int greenBandIdx,
530 const te::rst::Raster& inputBlueRaster,
const unsigned int blueBandIdx,
531 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputHLSRaster);
546 const unsigned int hueBandIdx,
const unsigned int lightBandIdx,
547 const unsigned int saturationBandIdx,
const double rgbRangeMin,
566 const te::rst::Raster& inputSRaster,
const unsigned int saturationBandIdx,
567 const double rgbRangeMin,
const double rgbRangeMax,
te::rst::Raster& outputRGBRaster);
580 const unsigned int maxThreads,
595 const unsigned int maxThreads,
596 double const *
const meanValuePtr,
597 double& stdDevValue );
614 const unsigned int maxThreads,
615 double const *
const mean1ValuePtr,
616 double const *
const mean2ValuePtr,
617 double& covarianceValue );
633 const std::vector< unsigned int >& inputRasterBands,
634 boost::numeric::ublas::matrix< double >& pcaMatrix,
636 const std::vector< unsigned int >& pcaRasterBands,
637 const unsigned int maxThreads );
652 const boost::numeric::ublas::matrix< double >& pcaMatrix,
654 const std::vector< unsigned int >& outputRasterBands,
655 const unsigned int maxThreads );
671 const std::vector< unsigned int >& inputRasterBands,
672 const boost::numeric::ublas::matrix< double >& remapMatrix,
674 const std::vector< unsigned int >& outputRasterBands,
675 const unsigned int maxThreads );
689 const std::vector< unsigned int >& inputRasterBands,
690 const std::vector< std::map<std::string, std::string> > & outputRastersInfos,
691 const std::string& outputDataSourceType,
692 std::vector< boost::shared_ptr< te::rst::Raster > > & outputRastersPtrs );
708 const std::vector< unsigned int >& inputRasterBands,
710 const std::map<std::string, std::string>& outputRasterInfo,
711 const std::string& outputDataSourceType,
712 std::unique_ptr< te::rst::Raster >& outputRasterPtr );
740 TERPEXPORT boost::numeric::ublas::matrix< double >
757 const std::vector< unsigned int >& inputRasterBands,
759 const unsigned int levelsNumber,
760 const boost::numeric::ublas::matrix< double >& filter );
776 const unsigned int levelsNumber,
778 const std::vector< unsigned int >& outputRasterBands );
798 const std::vector< unsigned int >& inputRasterBands,
800 const unsigned int firstRow,
801 const unsigned int firstColumn,
802 const unsigned int height,
803 const unsigned int width,
804 const unsigned int newheight,
805 const unsigned int newwidth,
806 const std::map<std::string, std::string>& rinfo,
807 const std::string& dataSourceType,
808 std::unique_ptr< te::rst::Raster >& resampledRasterPtr );
816 template<
typename ContainerT >
818 const bool useTPSecondCoordPair )
820 if( tiePoints.size() < 3 )
828 typename ContainerT::const_iterator it =
830 const typename ContainerT::const_iterator itE =
835 if( useTPSecondCoordPair )
843 std::unique_ptr< te::gm::Geometry > convexHullPolPtr( points.
convexHull() );
845 if( dynamic_cast< te::gm::Surface* >( convexHullPolPtr.get() ) )
862 const unsigned int paletteSize,
863 const bool randomize,
864 std::vector< te::rst::BandProperty::ColorEntry >& palette );
884 const unsigned int inputRasterBand,
885 const bool createPaletteRaster,
886 const unsigned int slicesNumber,
887 const bool eqHistogram,
888 const std::map< std::string, std::string >& rasterInfo,
889 const std::string& rasterType,
890 const bool enableProgress,
891 std::vector< te::rst::BandProperty::ColorEntry >
const *
const palettePtr,
892 std::unique_ptr< te::rst::Raster >& outRasterPtr,
893 std::map< double, double > limits);
898 #endif // __TERRALIB_RP_INTERNAL_FUNCTIONS_H bool GetMeanValue(const te::rst::Band &band, const unsigned int maxThreads, double &meanValue)
Get the mean of band pixel values.
double GetDigitalNumberBandMax(std::string bandName)
Returns the maximum digital number of a given sensor/band.
TERASTEREXPORT void GetDataTypeRanges(const int &dataType, double &min, double &max)
Return the values range of a given data type.
Index into a lookup table.
A raster band description.
double GetTPConvexHullArea(const ContainerT &tiePoints, const bool useTPSecondCoordPair)
Returns the tie points converx hull area.
void SaveSensorParams(std::map< std::string, SpectralSensorParams > ¶ms)
Saves in SpectralSensor.json file the spectral sensors parameters.
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::unique_ptr< te::rst::Raster > &outRasterPtr, std::map< double, double > limits)
Generate all wavelet planes from the given input raster.
std::map< std::string, SpectralSensorParams > getSensorParams()
Returns a map with spectral sensors parameters defined in SpectralSensor.json file.
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)...
std::vector< std::string > GetBandNames()
Returns a vector os with band's names.
bool CreateNewMemRaster(const te::rst::Grid &rasterGrid, std::vector< te::rst::BandProperty * > bandsProperties, RasterHandler &outRasterHandler)
Create a new raster into a new memory datasource.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
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::unique_ptr< te::rst::Raster > &outputRasterPtr)
Compose a set of bands into one multi-band raster.
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
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.
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.
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.
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.
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...
bool ConvertHLS2RGB(const te::rst::Raster &inputHLSRaster, const unsigned int hueBandIdx, const unsigned int lightBandIdx, const unsigned int saturationBandIdx, const double, const double rgbRangeMax, te::rst::Raster &outputRGBRaster)
HLS to RGB conversion.
unsigned int unsigned int nCols
bool CreateRasterFileFromMatrix(const te::rp::Matrix< MatrixElementT > &matrix, const bool normalize, const std::string &fileName)
Create a tiff file from a matrix.
bool Copy2DiskRaster(const te::rst::Raster &inputRaster, const std::string &fileName)
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.
An abstract class for raster data strucutures.
unsigned int getColumnsNumber() const
The number of current matrix columns.
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.
std::pair< double, double > GetDigitalNumberBandInfo(std::string bandName)
Returns the maximun and minimum digital numbers of a given sensor/band.
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.
void Convert2DoublesVector(void *inputVector, const int inputVectorDataType, unsigned int inputVectorSize, double *outputVector)
Convert vector elements.
A raster band description.
bool GetDetailedExtent(const te::rst::Grid &grid, te::gm::LinearRing &detailedExtent)
Create a datailed extent from the given grid.
SpectralSensorParams(const int &band, const double &lower, const double &upper, const double &min, const double &max)
bool ConvertRGB2HLS(const te::rst::Raster &inputRGBRaster, const unsigned int redBandIdx, const unsigned int greenBandIdx, const unsigned int blueBandIdx, const double, const double rgbRangeMax, te::rst::Raster &outputHLSRaster)
RGB to HLS conversion.
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.
boost::numeric::ublas::matrix< double > CreateWaveletAtrousFilter(const WaveletAtrousFilterType &filterType)
Create a Wavele Atrous Filter.
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.
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::unique_ptr< te::rst::Raster > &resampledRasterPtr)
Resample a subset of the raster, given a box.
TERPEXPORT double GetSpectralBandMin(std::string bandName)
Returns the minimum reflectance value of a given sensor/band.
SpectralSensorParams GetSpectralBandInfo(std::string bandName)
Returns the maximun and minimum reflectance values 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.
static Raster * make()
It creates and returns an empty raster with default raster driver.
bool GetIndexedDetailedExtent(const te::rst::Grid &grid, te::gm::LinearRing &indexedDetailedExtent)
Create a indexed (lines,columns) datailed extent from the given grid.
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.
void CreateFixedStepPalette(const unsigned int paletteSize, const bool randomize, std::vector< te::rst::BandProperty::ColorEntry > &palette)
Create a fixed step sequential color palette.
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.
A rectified grid is the spatial support for raster data.
Configuration flags for the Raster Processing module of TerraLib.
std::auto_ptr< te::rst::Raster > NormalizeRaster(te::rst::Raster *inraster, double nmin, double nmax, std::map< std::string, std::string > rInfo, std::string type)
std::string GetSensorFilename()
Returns a json filename with spectral sensors parameters.
unsigned int getLinesNumber() const
The number of current matrix lines.
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.
virtual Geometry * convexHull() const _NOEXCEPT_OP(false)
This method calculates the Convex Hull of a geometry.
void 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.