27 #include "../Config.h" 33 #define BOOST_TEST_NO_MAIN 34 #include <boost/test/unit_test.hpp> 38 void loadDoubleRaster( const
std::
string& rasterFileName,
std::unique_ptr<
te::
rst::Raster >& rasterPtr )
42 std::map<std::string, std::string> rinfo;
43 rinfo[
"URI"] = rasterFileName;
46 std::vector< te::rst::BandProperty * > bandsProperties;
48 unsigned int bandIdx = 0;
50 for( bandIdx = 0 ; bandIdx < rin->getNumberOfBands() ; ++bandIdx )
53 *rin->getBand( bandIdx )->getProperty() ) );
58 *rin->getGrid() ), bandsProperties ) );
60 const unsigned int nRows = rin->getNumberOfRows();
61 const unsigned int nCols = rin->getNumberOfColumns();
65 for( bandIdx = 0 ; bandIdx < rin->getNumberOfBands() ; ++bandIdx )
67 for( row = 0 ; row < nRows ; ++row )
71 rin->getValue( col, row, value, bandIdx );
72 rasterPtr->setValue( col, row, value, bandIdx );
82 std::unique_ptr< te::rst::Raster > rin;
83 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
96 std::map<std::string, std::string> orinfo;
97 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RasterSum.tif";
107 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
108 BOOST_CHECK(algorithmInstance.
execute(outputParams));
112 double inputValue1 = 0;
113 double inputValue2 = 0;
114 double outputValue = 0;
115 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
116 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
118 rin->getValue(c, r, inputValue1, 0);
119 rin->getValue(c, r, inputValue2, 1);
121 BOOST_CHECK_CLOSE( inputValue1 + inputValue2,
122 outputValue, 0.0000001 );
132 std::map<std::string, std::string> rinfo;
133 rinfo[
"URI"] = TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif";
146 std::map<std::string, std::string> orinfo;
147 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RasterSumNormalize.tif";
157 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
158 BOOST_CHECK(algorithmInstance.
execute(outputParams));
165 std::unique_ptr< te::rst::Raster > rin;
166 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
179 std::map<std::string, std::string> orinfo;
180 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RasterSubtraction.tif";
190 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
191 BOOST_CHECK(algorithmInstance.
execute(outputParams));
195 double inputValue1 = 0;
196 double inputValue2 = 0;
197 double outputValue = 0;
198 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
199 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
201 rin->getValue(c, r, inputValue1, 0);
202 rin->getValue(c, r, inputValue2, 1);
204 BOOST_CHECK_CLOSE( ( inputValue1 - inputValue2 ),
205 outputValue, 0.0000001 );
213 std::unique_ptr< te::rst::Raster > rin;
214 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
227 std::map<std::string, std::string> orinfo;
228 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RasterProduct.tif";
238 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
239 BOOST_CHECK(algorithmInstance.
execute(outputParams));
243 double inputValue1 = 0;
244 double inputValue2 = 0;
245 double outputValue = 0;
246 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
247 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
249 rin->getValue(c, r, inputValue1, 0);
250 rin->getValue(c, r, inputValue2, 1);
252 BOOST_CHECK_CLOSE( inputValue1 * inputValue2, outputValue, 0.0000001 );
260 std::unique_ptr< te::rst::Raster > rin;
261 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
274 std::map<std::string, std::string> orinfo;
275 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RasterDivision.tif";
285 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
286 BOOST_CHECK(algorithmInstance.
execute(outputParams));
290 double inputValue1 = 0;
291 double inputValue2 = 0;
292 double outputValue = 0;
293 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
294 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
296 rin->getValue(c, r, inputValue1, 0);
297 rin->getValue(c, r, inputValue2, 1);
299 BOOST_CHECK_CLOSE( inputValue1 / inputValue2, outputValue, 0.0000001 );
307 std::unique_ptr< te::rst::Raster > rin;
308 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
321 std::map<std::string, std::string> orinfo;
322 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RealSum.tif";
332 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
333 BOOST_CHECK(algorithmInstance.
execute(outputParams));
337 double inputValue1 = 0;
338 double outputValue = 0;
339 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
340 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
342 rin->getValue(c, r, inputValue1, 0);
344 BOOST_CHECK_CLOSE( inputValue1 + 1.0, outputValue, 0.0000001 );
352 std::unique_ptr< te::rst::Raster > rin;
353 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
366 std::map<std::string, std::string> orinfo;
367 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RealSubtraction.tif";
377 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
378 BOOST_CHECK(algorithmInstance.
execute(outputParams));
382 double inputValue1 = 0;
383 double outputValue = 0;
384 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
385 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
387 rin->getValue(c, r, inputValue1, 0);
389 BOOST_CHECK_CLOSE( inputValue1 - 1.0, outputValue, 0.0000001 );
397 std::unique_ptr< te::rst::Raster > rin;
398 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
411 std::map<std::string, std::string> orinfo;
412 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RealSubtractionInverse.tif";
422 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
423 BOOST_CHECK(algorithmInstance.
execute(outputParams));
427 double inputValue1 = 0;
428 double outputValue = 0;
429 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
430 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
432 rin->getValue(c, r, inputValue1, 0);
434 BOOST_CHECK_CLOSE( 1.0 - inputValue1, outputValue, 0.0000001 );
442 std::unique_ptr< te::rst::Raster > rin;
443 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
456 std::map<std::string, std::string> orinfo;
457 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RealProduct.tif";
467 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
468 BOOST_CHECK(algorithmInstance.
execute(outputParams));
472 double inputValue1 = 0;
473 double outputValue = 0;
474 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
475 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
477 rin->getValue(c, r, inputValue1, 0);
479 BOOST_CHECK_CLOSE( inputValue1 * 2.0, outputValue, 0.0000001 );
487 std::unique_ptr< te::rst::Raster > rin;
488 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
501 std::map<std::string, std::string> orinfo;
502 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RealDivision.tif";
512 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
513 BOOST_CHECK(algorithmInstance.
execute(outputParams));
517 double inputValue1 = 0;
518 double outputValue = 0;
519 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
520 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
522 rin->getValue(c, r, inputValue1, 0);
524 BOOST_CHECK_CLOSE( inputValue1 / 2.0, outputValue, 0.0000001 );
532 std::unique_ptr< te::rst::Raster > rin;
533 loadDoubleRaster( TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
546 std::map<std::string, std::string> orinfo;
547 orinfo[
"URI"] =
"terralib_unittest_arithmetic_RealDivisionInverse.tif";
557 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
558 BOOST_CHECK(algorithmInstance.
execute(outputParams));
562 double inputValue1 = 0;
563 double outputValue = 0;
564 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
565 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
567 rin->getValue(c, r, inputValue1, 0);
569 BOOST_CHECK_CLOSE( 1.0 / inputValue1, outputValue, 0.0000001 );
575 std::map<std::string, std::string> rinfo1;
576 rinfo1[
"URI"] = TERRALIB_DATA_DIR
"/geotiff/cbers_rgb342_crop1.tif";
579 std::map<std::string, std::string> rinfo2;
580 rinfo2[
"URI"] = TERRALIB_DATA_DIR
"/geotiff/cbers_rgb342_crop2.tif";
594 std::map<std::string, std::string> orinfo;
595 orinfo[
"URI"] =
"terralib_unittest_arithmetic_diffGrid.tif";
605 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
606 BOOST_CHECK(algorithmInstance.
execute(outputParams));
613 std::unique_ptr< te::rst::Raster > rin;
614 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
627 std::map<std::string, std::string> orinfo;
628 orinfo[
"URI"] =
"terralib_unittest_arithmetic_exponential.tif";
638 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
639 BOOST_CHECK(algorithmInstance.
execute(outputParams));
643 double inputValue1 = 0;
644 double outputValue = 0;
645 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
646 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
648 rin->getValue(c, r, inputValue1, 0);
650 BOOST_CHECK_CLOSE(pow(inputValue1, 2.0), outputValue, 0.0000001);
658 std::unique_ptr< te::rst::Raster > rin;
659 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
672 std::map<std::string, std::string> orinfo;
673 orinfo[
"URI"] =
"terralib_unittest_arithmetic_sqrt.tif";
683 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
684 BOOST_CHECK(algorithmInstance.
execute(outputParams));
688 double inputValue1 = 0;
689 double outputValue = 0;
690 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
691 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
693 rin->getValue(c, r, inputValue1, 0);
695 BOOST_CHECK_CLOSE(sqrt(inputValue1), outputValue, 0.0000001);
703 std::unique_ptr< te::rst::Raster > rin;
704 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
717 std::map<std::string, std::string> orinfo;
718 orinfo[
"URI"] =
"terralib_unittest_arithmetic_sin.tif";
728 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
729 BOOST_CHECK(algorithmInstance.
execute(outputParams));
733 double inputValue1 = 0;
734 double outputValue = 0;
735 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
736 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
738 rin->getValue(c, r, inputValue1, 0);
740 BOOST_CHECK_CLOSE(sin(inputValue1), outputValue, 0.0000001);
748 std::unique_ptr< te::rst::Raster > rin;
749 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/landsat8_22768_ndvi.tif",
762 std::map<std::string, std::string> orinfo;
763 orinfo[
"URI"] =
"terralib_unittest_arithmetic_asin.tif";
773 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
774 BOOST_CHECK(algorithmInstance.
execute(outputParams));
778 double inputValue1 = 0;
779 double outputValue = 0;
780 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
781 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
783 rin->getValue(c, r, inputValue1, 0);
786 BOOST_CHECK_CLOSE(asin(inputValue1), outputValue, 0.0000001);
794 std::unique_ptr< te::rst::Raster > rin;
795 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
808 std::map<std::string, std::string> orinfo;
809 orinfo[
"URI"] =
"terralib_unittest_arithmetic_cos.tif";
819 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
820 BOOST_CHECK(algorithmInstance.
execute(outputParams));
824 double inputValue1 = 0;
825 double outputValue = 0;
826 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
827 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
829 rin->getValue(c, r, inputValue1, 0);
831 BOOST_CHECK_CLOSE(cos(inputValue1), outputValue, 0.0000001);
839 std::unique_ptr< te::rst::Raster > rin;
840 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/landsat8_22768_ndvi.tif",
853 std::map<std::string, std::string> orinfo;
854 orinfo[
"URI"] =
"terralib_unittest_arithmetic_acos.tif";
864 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
865 BOOST_CHECK(algorithmInstance.
execute(outputParams));
869 double inputValue1 = 0;
870 double outputValue = 0;
871 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
872 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
874 rin->getValue(c, r, inputValue1, 0);
877 BOOST_CHECK_CLOSE(acos(inputValue1), outputValue, 0.0000001);
885 std::unique_ptr< te::rst::Raster > rin;
886 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
899 std::map<std::string, std::string> orinfo;
900 orinfo[
"URI"] =
"terralib_unittest_arithmetic_log.tif";
910 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
911 BOOST_CHECK(algorithmInstance.
execute(outputParams));
915 double inputValue1 = 0;
916 double outputValue = 0;
917 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
918 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
920 rin->getValue(c, r, inputValue1, 0);
922 BOOST_CHECK_CLOSE(log10(inputValue1), outputValue, 0.0000001);
930 std::unique_ptr< te::rst::Raster > rin;
931 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
944 std::map<std::string, std::string> orinfo;
945 orinfo[
"URI"] =
"terralib_unittest_arithmetic_tan.tif";
955 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
956 BOOST_CHECK(algorithmInstance.
execute(outputParams));
960 double inputValue1 = 0;
961 double outputValue = 0;
962 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
963 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
965 rin->getValue(c, r, inputValue1, 0);
967 BOOST_CHECK_CLOSE(tan(inputValue1), outputValue, 0.0000001);
975 std::unique_ptr< te::rst::Raster > rin;
976 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
989 std::map<std::string, std::string> orinfo;
990 orinfo[
"URI"] =
"terralib_unittest_arithmetic_atan.tif";
1000 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
1001 BOOST_CHECK(algorithmInstance.
execute(outputParams));
1005 double inputValue1 = 0;
1006 double outputValue = 0;
1007 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
1008 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
1010 rin->getValue(c, r, inputValue1, 0);
1012 BOOST_CHECK_CLOSE(atan(inputValue1), outputValue, 0.0000001);
1020 std::unique_ptr< te::rst::Raster > rin;
1021 loadDoubleRaster(TERRALIB_DATA_DIR
"/geotiff/cbers2b_rgb342_crop.tif",
1034 std::map<std::string, std::string> orinfo;
1035 orinfo[
"URI"] =
"terralib_unittest_arithmetic_ln.tif";
1040 outputParams.
m_rInfo = orinfo;
1041 outputParams.
m_rType =
"GDAL";
1045 BOOST_CHECK(algorithmInstance.
initialize(inputParams));
1046 BOOST_CHECK(algorithmInstance.
execute(outputParams));
1050 double inputValue1 = 0;
1051 double outputValue = 0;
1052 for (
unsigned int r = 0; r < rin->getNumberOfRows(); r++)
1053 for (
unsigned int c = 0; c < rin->getNumberOfColumns(); c++)
1055 rin->getValue(c, r, inputValue1, 0);
1057 BOOST_CHECK_CLOSE(log(inputValue1), outputValue, 0.0000001);
1061 BOOST_AUTO_TEST_SUITE_END()
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
This file contains include headers for the memory data source of TerraLib.
A raster band description.
bool execute(AlgorithmOutputParameters &outputParams) _NOEXCEPT_OP(false)
Executes the algorithm using the supplied parameters.
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
bool initialize(const AlgorithmInputParameters &inputParams) _NOEXCEPT_OP(false)
Initialize the algorithm instance making it ready for execution.
unsigned int unsigned int nCols
std::unique_ptr< te::rst::Raster > m_outputRasterPtr
The generated output registered raster.
ArithmeticOperations output parameters.
This file contains include headers for the TerraLib Raster Processing module.
A raster (stored in memory and eventually swapped to disk) where it is possible to dynamically add li...
BOOST_AUTO_TEST_CASE(rasterSum_test)
Performs arithmetic operation over raster data.
A rectified grid is the spatial support for raster data.
BOOST_AUTO_TEST_SUITE(arithmetic_operations_tests) void loadDoubleRaster(const std
static Raster * open(const std::map< std::string, std::string > &rinfo, te::common::AccessPolicy p=te::common::RAccess)
It opens a raster with the given parameters and default raster driver.