00001 #define TEAGN_ENABLE_STDOUT_LOG
00002
00003 #include <TePDIExamplesBase.hpp>
00004
00005 #include <TePDIUtils.hpp>
00006
00007 #include <TeAgnostic.h>
00008
00009 #include <string>
00010
00011 #include <TeProgress.h>
00012 #include <TeStdIOProgress.h>
00013 #include <TePrecision.h>
00014 #include <TeInitRasterDecoders.h>
00015
00016
00017 void raster_compare_test()
00018 {
00019 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00020 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00021
00022 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00023
00024 TEAGN_TRUE_OR_THROW(
00025 TePDIUtils::rasterCompare( inRaster, inRaster ),
00026 "Raster compare error" );
00027 }
00028
00029
00030 void TeGetRasterMinMaxBounds_test()
00031 {
00032 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00033 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00034
00035 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00036
00037 double min = 0;
00038 double max = 0;
00039
00040 TEAGN_TRUE_OR_THROW( TePDIUtils::TeGetRasterMinMaxBounds( inRaster, 0, min, max ),
00041 "Unable to get bounds" );
00042
00043 TEAGN_CHECK_EQUAL( min, 0, "Invalid min value" );
00044 TEAGN_CHECK_EQUAL( max, 255, "Invalid max value" );
00045
00046 }
00047
00048
00049 void TeRaster2Geotiff_deprecated_test()
00050 {
00051 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00052 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00053
00054 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00055
00056 double pixel_value = 0;
00057 TEAGN_TRUE_OR_THROW( inRaster->getElement( 0, 0, pixel_value, 0 ),
00058 "Unable to get element" );
00059 TEAGN_CHECK_EPS( pixel_value, 88., 0.00001,
00060 "Pixel value inversion detected" );
00061
00062 TEAGN_TRUE_OR_THROW( TePDIUtils::TeRaster2Geotiff( inRaster,
00063 TEPDIEXAMPLESBINPATH "TeRaster2Geotiff_test.tif" ), "GeoTIF generation error" );
00064
00065 TePDITypes::TePDIRasterPtrType inRaster2( new TeRaster(
00066 std::string( TEPDIEXAMPLESBINPATH "TeRaster2Geotiff_test.tif" ), 'r' ) );
00067
00068 TEAGN_TRUE_OR_THROW( inRaster2->init(), "Unable to init inRaster2" );
00069
00070 TEAGN_TRUE_OR_THROW( inRaster2->getElement( 0, 0, pixel_value, 0 ),
00071 "Unable to get element" );
00072 TEAGN_CHECK_EPS( pixel_value, 88., 0.00001,
00073 "Pixel value inversion detected" );
00074
00075 TEAGN_TRUE_OR_THROW(
00076 TePDIUtils::rasterCompare( inRaster, inRaster2 ),
00077 "Raster compare error" );
00078 }
00079
00080
00081 void TeRaster2Geotiff_test()
00082 {
00083 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00084 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00085
00086 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00087
00088 double pixel_value = 0;
00089 TEAGN_TRUE_OR_THROW( inRaster->getElement( 0, 0, pixel_value, 0 ),
00090 "Unable to get element" );
00091 TEAGN_CHECK_EPS( pixel_value, 88., 0.00001,
00092 "Pixel value inversion detected" );
00093
00094 TEAGN_TRUE_OR_THROW( TePDIUtils::TeRaster2Geotiff( inRaster,
00095 TEPDIEXAMPLESBINPATH "TeRaster2Geotiff_test.tif",
00096 true ), "GeoTIF generation error" );
00097
00098 TePDITypes::TePDIRasterPtrType inRaster2( new TeRaster(
00099 std::string( TEPDIEXAMPLESBINPATH "TeRaster2Geotiff_test.tif" ), 'r' ) );
00100
00101 TEAGN_TRUE_OR_THROW( inRaster2->init(), "Unable to init inRaster2" );
00102
00103 TEAGN_TRUE_OR_THROW( inRaster2->getElement( 0, 0, pixel_value, 0 ),
00104 "Unable to get element" );
00105 TEAGN_CHECK_EPS( pixel_value, 88., 0.00001,
00106 "Pixel value inversion detected" );
00107
00108 TEAGN_TRUE_OR_THROW(
00109 TePDIUtils::rasterCompare( inRaster, inRaster2 ),
00110 "Raster compare error" );
00111 }
00112
00113 void TeRaster2RGBGeotiff_test()
00114 {
00115 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00116 std::string( TEPDIEXAMPLESRESPATH "cbers_rgb342_crop1_chip0_0.tif" ), 'r' ) );
00117
00118 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00119
00120 TEAGN_TRUE_OR_THROW( TePDIUtils::TeRaster2RGBGeotiff( inRaster,
00121 TEPDIEXAMPLESBINPATH "TeRaster2RGBGeotiff_test.tif",
00122 true ), "GeoTIF generation error" );
00123
00124 TePDITypes::TePDIRasterPtrType inRaster2( new TeRaster(
00125 std::string( TEPDIEXAMPLESBINPATH "TeRaster2RGBGeotiff_test.tif" ), 'r' ) );
00126
00127 TEAGN_TRUE_OR_THROW( inRaster2->init(), "Unable to init inRaster2" );
00128
00129 TEAGN_TRUE_OR_THROW(
00130 TePDIUtils::rasterCompare( inRaster, inRaster2 ),
00131 "Raster compare error" );
00132 }
00133
00134 void TeRaster2Jpeg_test()
00135 {
00136 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00137 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00138
00139 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00140
00141 double pixel_value = 0;
00142 TEAGN_TRUE_OR_THROW( inRaster->getElement( 0, 0, pixel_value, 0 ),
00143 "Unable to get element" );
00144 TEAGN_CHECK_EPS( pixel_value, 88., 0.00001,
00145 "Pixel value inversion detected" );
00146
00147 TEAGN_TRUE_OR_THROW( TePDIUtils::TeRaster2Jpeg( inRaster,
00148 TEPDIEXAMPLESBINPATH "TeRaster2Jpeg_test.jpg",
00149 true, 100 ), "GeoTIF generation error" );
00150
00151 TePDITypes::TePDIRasterPtrType inRaster2( new TeRaster(
00152 std::string( TEPDIEXAMPLESBINPATH "TeRaster2Jpeg_test.jpg" ), 'r' ) );
00153
00154 TEAGN_TRUE_OR_THROW( inRaster2->init(), "Unable to init inRaster2" );
00155
00156 TEAGN_TRUE_OR_THROW( inRaster2->getElement( 0, 0, pixel_value, 0 ),
00157 "Unable to get element" );
00158 TEAGN_CHECK_EPS( pixel_value, 88., 0.00001,
00159 "Pixel value inversion detected" );
00160 }
00161
00162
00163 void TeGetRasterReqMem_test()
00164 {
00165 TePDITypes::TePDIRasterPtrType RAMRaster;
00166
00167 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster, 10,
00168 10, 10, false, TeUNSIGNEDCHAR, 0 ), "RAM Raster Allocation error" );
00169
00170 TEAGN_TRUE_OR_THROW(
00171 ( TePDIUtils::TeGetRasterReqMem( RAMRaster->params() ) == 1000 ),
00172 "Invalid TeGetRasterReqMem result" );
00173 }
00174
00175
00176 void TeAllocRAMRaster1_test()
00177 {
00178 TePDITypes::TePDIRasterPtrType RAMRaster;
00179
00180 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster, 10,
00181 10, 10, false, TeUNSIGNEDCHAR, 0 ), "RAM Raster Allocation error" );
00182
00183 TEAGN_TRUE_OR_THROW(
00184 RAMRaster->params().status_ == TeRasterParams::TeReadyToWrite,
00185 "Raster status error" );
00186 TEAGN_TRUE_OR_THROW( RAMRaster->params().nlines_ == 10, "Lines error" );
00187 TEAGN_TRUE_OR_THROW( RAMRaster->params().ncols_ == 10, "Columns error" );
00188 TEAGN_TRUE_OR_THROW( RAMRaster->nBands() == 10, "Bands error" );
00189 TEAGN_TRUE_OR_THROW( RAMRaster->params().dataType_[ 0 ] == TeUNSIGNEDCHAR,
00190 "data type error" );
00191 }
00192
00193
00194 void TeAllocRAMRaster_templateraster_test()
00195 {
00196 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00197 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00198
00199 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00200
00201 TePDITypes::TePDIRasterPtrType RAMRaster( new TeRaster );
00202
00203 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( inRaster, RAMRaster, 0,
00204 true, false, TeUNSIGNEDCHAR ), "RAM Raster Allocation error" );
00205
00206 TEAGN_TRUE_OR_THROW( RAMRaster->params().dataType_[ 0 ] == TeUNSIGNEDCHAR,
00207 "data type error" );
00208 TEAGN_TRUE_OR_THROW(
00209 RAMRaster->params().status_ == TeRasterParams::TeReadyToWrite,
00210 "Raster status error" );
00211
00212 TEAGN_TRUE_OR_THROW( RAMRaster->params().nlines_ ==
00213 inRaster->params().nlines_, "Checking error" );
00214 TEAGN_TRUE_OR_THROW( RAMRaster->params().ncols_ ==
00215 inRaster->params().ncols_, "Checking error" );
00216 TEAGN_TRUE_OR_THROW( RAMRaster->params().dataType_[ 0 ] ==
00217 inRaster->params().dataType_[ 0 ], "Checking error" );
00218 TEAGN_TRUE_OR_THROW( ( *(RAMRaster->params().projection()) ) ==
00219 ( *(inRaster->params().projection()) ), "Checking error" );
00220 TEAGN_TRUE_OR_THROW( RAMRaster->params().box() ==
00221 inRaster->params().box(), "Checking error" );
00222 TEAGN_TRUE_OR_THROW( RAMRaster->params().resx_ ==
00223 inRaster->params().resx_, "Checking error" );
00224 TEAGN_TRUE_OR_THROW( RAMRaster->params().resy_ ==
00225 inRaster->params().resy_, "Checking error" );
00226 TEAGN_TRUE_OR_THROW(
00227 RAMRaster->params().status_ == TeRasterParams::TeReadyToWrite,
00228 "Raster status error" );
00229 }
00230
00231
00232 void TeAllocRAMRaster_usingparams_test()
00233 {
00234 TePDITypes::TePDIRasterPtrType RAMRaster;
00235
00236 TeRasterParams params;
00237 params.nBands( 10 );
00238 params.nlines_ = 10;
00239 params.ncols_ = 10;
00240 params.setDataType( TeUNSIGNEDCHAR, -1 );
00241
00242 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster, params,
00243 TePDIUtils::TePDIUtilsAutoMemPol ), "RAM Raster Allocation error" );
00244
00245 TEAGN_TRUE_OR_THROW(
00246 RAMRaster->params().status_ == TeRasterParams::TeReadyToWrite,
00247 "Raster status error" );
00248 TEAGN_TRUE_OR_THROW( RAMRaster->params().nlines_ == 10, "Lines error" );
00249 TEAGN_TRUE_OR_THROW( RAMRaster->params().ncols_ == 10, "Columns error" );
00250 TEAGN_TRUE_OR_THROW( RAMRaster->nBands() == 10, "Bands error" );
00251 TEAGN_TRUE_OR_THROW( RAMRaster->params().dataType_[ 0 ] == TeUNSIGNEDCHAR,
00252 "data type error" );
00253 }
00254
00255
00256 void TeAllocMemoryMappedRaster_test()
00257 {
00258 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00259 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00260
00261 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00262
00263 TePDITypes::TePDIRasterPtrType RAMRaster;
00264
00265 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( inRaster, RAMRaster, 0,
00266 true, true, TeUNSIGNEDCHAR ), "RAM Raster Allocation error" );
00267
00268 TEAGN_TRUE_OR_THROW( RAMRaster->params().dataType_[ 0 ] == TeUNSIGNEDCHAR,
00269 "data type error" );
00270 TEAGN_TRUE_OR_THROW(
00271 RAMRaster->params().status_ == TeRasterParams::TeReadyToWrite,
00272 "Raster status error" );
00273
00274 TEAGN_TRUE_OR_THROW( TePDIUtils::TeCopyRasterBands( inRaster,
00275 RAMRaster, false, false ), "Raster band copy error" );
00276
00277 TEAGN_TRUE_OR_THROW( TePDIUtils::TeRaster2Geotiff( RAMRaster,
00278 TEPDIEXAMPLESBINPATH "TeAllocMemoryMappedRaster_test.tif" ), "GeoTIF generation error" );
00279 }
00280
00281
00282 void IsFloatBand_test()
00283 {
00284
00285 TePDITypes::TePDIRasterPtrType RAMRaster_int;
00286
00287 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster_int, 10,
00288 10, 10, false, TeINTEGER, 0 ), "RAM Raster Allocation error" );
00289
00290 TEAGN_TRUE_OR_THROW( ( ! TePDIUtils::IsFloatBand( RAMRaster_int, 0 ) ),
00291 "Invalid result" );
00292
00293 TePDITypes::TePDIRasterPtrType RAMRaster_uchar;
00294
00295 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster_uchar, 10,
00296 10, 10, false, TeUNSIGNEDCHAR, 0 ), "RAM Raster Allocation error" );
00297
00298 TEAGN_TRUE_OR_THROW( ( ! TePDIUtils::IsFloatBand( RAMRaster_uchar, 0 ) ),
00299 "Invalid result" );
00300
00301 TePDITypes::TePDIRasterPtrType RAMRaster_float;
00302
00303 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster_float, 10,
00304 10, 10, false, TeFLOAT, 0 ), "RAM Raster Allocation error" );
00305
00306 TEAGN_TRUE_OR_THROW( ( TePDIUtils::IsFloatBand( RAMRaster_float, 0 ) ),
00307 "Invalid result" );
00308
00309 TePDITypes::TePDIRasterPtrType RAMRaster_double;
00310
00311 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster_double, 10,
00312 10, 10, false, TeDOUBLE, 0 ), "RAM Raster Allocation error" );
00313
00314 TEAGN_TRUE_OR_THROW( ( TePDIUtils::IsFloatBand( RAMRaster_double, 0 ) ),
00315 "Invalid result" );
00316 };
00317
00318
00319 void buildDetailedBox_test()
00320 {
00321 TeNoProjection proj;
00322
00323 TeRasterParams params;
00324 params.nBands( 1 );
00325 params.nlines_ = 3;
00326 params.ncols_ = 3;
00327 params.projection( &proj );
00328
00329 TePDITypes::TePDIRasterPtrType ram_raster;
00330 TEAGN_TRUE_OR_THROW(
00331 TePDIUtils::TeAllocRAMRaster( ram_raster, params, false ),
00332 "RAM Raster Allocation error" );
00333
00334 TePolygon box_polygon;
00335
00336 TEAGN_TRUE_OR_THROW( TePDIUtils::buildDetailedBox( ram_raster,
00337 box_polygon), "detailed box building error" );
00338
00339 TEAGN_TRUE_OR_THROW( ( box_polygon.size() == 1 ),
00340 "Invalid linear rings number" );
00341 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ].size() == 9 ),
00342 "Invalid points number" );
00343
00344 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 0 ] ==
00345 ram_raster->index2Coord( TeCoord2D( 0, 0 ) ) ),
00346 "Invalid point" );
00347 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 1 ] ==
00348 ram_raster->index2Coord( TeCoord2D( 1, 0 ) ) ),
00349 "Invalid point" );
00350 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 2 ] ==
00351 ram_raster->index2Coord( TeCoord2D( 2, 0 ) ) ),
00352 "Invalid point" );
00353
00354 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 3 ] ==
00355 ram_raster->index2Coord( TeCoord2D( 2, 1 ) ) ),
00356 "Invalid point" );
00357 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 4 ] ==
00358 ram_raster->index2Coord( TeCoord2D( 2, 2 ) ) ),
00359 "Invalid point" );
00360
00361 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 5 ] ==
00362 ram_raster->index2Coord( TeCoord2D( 1, 2 ) ) ),
00363 "Invalid point" );
00364 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 6 ] ==
00365 ram_raster->index2Coord( TeCoord2D( 0, 2 ) ) ),
00366 "Invalid point" );
00367
00368 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 7 ] ==
00369 ram_raster->index2Coord( TeCoord2D( 0, 1 ) ) ),
00370 "Invalid point" );
00371 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 8 ] ==
00372 ram_raster->index2Coord( TeCoord2D( 0, 0 ) ) ),
00373 "Invalid point" );
00374
00375 }
00376
00377
00378 void buildDetailedBBox_test()
00379 {
00380 TeNoProjection proj;
00381
00382 TeRasterParams params;
00383 params.nBands( 1 );
00384 params.nlines_ = 3;
00385 params.ncols_ = 3;
00386 params.projection( &proj );
00387
00388 TePDITypes::TePDIRasterPtrType ram_raster;
00389 TEAGN_TRUE_OR_THROW(
00390 TePDIUtils::TeAllocRAMRaster( ram_raster, params, false ),
00391 "RAM Raster Allocation error" );
00392
00393 TePolygon box_polygon;
00394
00395 TEAGN_TRUE_OR_THROW( TePDIUtils::buildDetailedBBox( ram_raster,
00396 box_polygon), "detailed box building error" );
00397
00398 TEAGN_TRUE_OR_THROW( ( box_polygon.size() == 1 ),
00399 "Invalid linear rings number" );
00400 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ].size() == 13 ),
00401 "Invalid points number" );
00402
00403 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 0 ] ==
00404 ram_raster->index2Coord( TeCoord2D( -0.5, -0.5 ) ) ),
00405 "Invalid point" );
00406 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 1 ] ==
00407 ram_raster->index2Coord( TeCoord2D( 0.5, -0.5 ) ) ),
00408 "Invalid point" );
00409 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 2 ] ==
00410 ram_raster->index2Coord( TeCoord2D( 1.5, -0.5 ) ) ),
00411 "Invalid point" );
00412 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 3 ] ==
00413 ram_raster->index2Coord( TeCoord2D( 2.5, -0.5 ) ) ),
00414 "Invalid point" );
00415
00416 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 4 ] ==
00417 ram_raster->index2Coord( TeCoord2D( 2.5, 0.5 ) ) ),
00418 "Invalid point" );
00419 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 5 ] ==
00420 ram_raster->index2Coord( TeCoord2D( 2.5, 1.5 ) ) ),
00421 "Invalid point" );
00422 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 6 ] ==
00423 ram_raster->index2Coord( TeCoord2D( 2.5, 2.5 ) ) ),
00424 "Invalid point" );
00425
00426 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 7 ] ==
00427 ram_raster->index2Coord( TeCoord2D( 1.5, 2.5 ) ) ),
00428 "Invalid point" );
00429 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 8 ] ==
00430 ram_raster->index2Coord( TeCoord2D( 0.5, 2.5 ) ) ),
00431 "Invalid point" );
00432 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 9 ] ==
00433 ram_raster->index2Coord( TeCoord2D( -0.5, 2.5 ) ) ),
00434 "Invalid point" );
00435
00436 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 10 ] ==
00437 ram_raster->index2Coord( TeCoord2D( -0.5, 1.5 ) ) ),
00438 "Invalid point" );
00439 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 11 ] ==
00440 ram_raster->index2Coord( TeCoord2D( -0.5, 0.5 ) ) ),
00441 "Invalid point" );
00442 TEAGN_TRUE_OR_THROW( ( box_polygon[ 0 ][ 12 ] ==
00443 ram_raster->index2Coord( TeCoord2D( -0.5, -0.5 ) ) ),
00444 "Invalid point" );
00445 }
00446
00447 void reprojectRaster_test()
00448 {
00449 TePDITypes::TePDIRasterPtrType inRaster( new TeRaster(
00450 std::string( TEPDIEXAMPLESRESPATH "cbers_b2_crop.tif" ), 'r' ) );
00451 TEAGN_TRUE_OR_THROW( inRaster->init(), "Unable to init inRaster" );
00452
00453 TePDITypes::TePDIRasterPtrType ram_raster;
00454 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( ram_raster, 10,
00455 10, 10, false, TeUNSIGNEDCHAR, 0 ), "RAM Raster Allocation error" );
00456
00457
00458 TeSharedPtr< TeProjection > projPtr( TeProjectionFactory::make( 4618 ) );
00459 TEAGN_TRUE_OR_THROW( projPtr.isActive(), "Unable to build a projection" );
00460
00461 TEAGN_TRUE_OR_THROW( TePDIUtils::reprojectRaster( *inRaster,
00462 inRaster->params().nlines_, inRaster->params().ncols_,
00463 *projPtr, true, true, *ram_raster ),
00464 "Raster reprojection error" );
00465
00466 TEAGN_TRUE_OR_THROW( TePDIUtils::TeRaster2Geotiff( ram_raster,
00467 TEPDIEXAMPLESBINPATH "TePDIUtils_reprojectRaster_test.tif" ), "GeoTIF generation error" );
00468
00469 TEAGN_TRUE_OR_THROW( ram_raster->projection()->name() == "LatLong",
00470 "Invalid projection name" );
00471 TEAGN_CHECK_EPS( -50.616788,
00472 ram_raster->params().box().x1(), 0.000001, "Invalid box" );
00473 TEAGN_CHECK_EPS( -50.452947,
00474 ram_raster->params().box().x2(), 0.000001, "Invalid box" );
00475 TEAGN_CHECK_EPS( -19.082162,
00476 ram_raster->params().box().y1(), 0.0001, "Invalid box" );
00477 TEAGN_CHECK_EPS( -18.930647,
00478 ram_raster->params().box().y2(), 0.0001, "Invalid box" );
00479 TEAGN_CHECK_EPS( 0.000191,
00480 ram_raster->params().resx_, 0.0001, "Invalid box" );
00481 TEAGN_CHECK_EPS( 0.000191,
00482 ram_raster->params().resy_, 0.0001, "Invalid box" );
00483 }
00484
00485
00486 void TeRelation_test()
00487 {
00488 TeLinearRing r1;
00489 r1.add( TeCoord2D( 0, 0 ) );
00490 r1.add( TeCoord2D( 3, 0 ) );
00491 r1.add( TeCoord2D( 3, 3 ) );
00492 r1.add( TeCoord2D( 0, 3.3 ) );
00493 r1.add( TeCoord2D( 0, 0 ) );
00494
00495 TeLinearRing r2;
00496 r2.add( TeCoord2D( 1, 1 ) );
00497 r2.add( TeCoord2D( 2, 1 ) );
00498 r2.add( TeCoord2D( 2, 2 ) );
00499 r2.add( TeCoord2D( 1, 2 ) );
00500 r2.add( TeCoord2D( 1, 1 ) );
00501
00502 TePolygon pol1;
00503 pol1.add( r1 );
00504 pol1.add( r2 );
00505
00506 TePDITileIndexer ti( pol1, 0.3 );
00507
00508 TEAGN_TRUE_OR_THROW(
00509 ( TePDIUtils::TeRelation( TeCoord2D( 1.5, 0.5 ), ti ) == TeINSIDE ),
00510 "Invalid relation" );
00511 TEAGN_TRUE_OR_THROW(
00512 ( TePDIUtils::TeRelation( TeCoord2D( 2.5, 1.5 ), ti ) == TeINSIDE ),
00513 "Invalid relation" );
00514 TEAGN_TRUE_OR_THROW(
00515 ( TePDIUtils::TeRelation( TeCoord2D( 1.5, 2.5 ), ti ) == TeINSIDE ),
00516 "Invalid relation" );
00517 TEAGN_TRUE_OR_THROW(
00518 ( TePDIUtils::TeRelation( TeCoord2D( 0.5, 1.5 ), ti ) == TeINSIDE ),
00519 "Invalid relation" );
00520 TEAGN_TRUE_OR_THROW(
00521 ( TePDIUtils::TeRelation( TeCoord2D( 0.5, 1.5 ), ti ) == TeINSIDE ),
00522 "Invalid relation" );
00523 TEAGN_TRUE_OR_THROW(
00524 ( TePDIUtils::TeRelation( TeCoord2D( 0.1, 3.1 ), ti ) == TeINSIDE ),
00525 "Invalid relation" );
00526
00527 TEAGN_TRUE_OR_THROW(
00528 ( TePDIUtils::TeRelation( TeCoord2D( 1.5, 1.5 ), ti ) == TeOUTSIDE ),
00529 "Invalid relation" );
00530 TEAGN_TRUE_OR_THROW(
00531 ( TePDIUtils::TeRelation( TeCoord2D( 2.5, 3.5 ), ti ) == TeOUTSIDE ),
00532 "Invalid relation" );
00533 TEAGN_TRUE_OR_THROW(
00534 ( TePDIUtils::TeRelation( TeCoord2D( -1.0, 1.0 ), ti ) == TeOUTSIDE ),
00535 "Invalid relation" );
00536 TEAGN_TRUE_OR_THROW(
00537 ( TePDIUtils::TeRelation( TeCoord2D( -1.0, -1.0 ), ti ) == TeOUTSIDE ),
00538 "Invalid relation" );
00539 TEAGN_TRUE_OR_THROW(
00540 ( TePDIUtils::TeRelation( TeCoord2D( 1.0, -1.0 ), ti ) == TeOUTSIDE ),
00541 "Invalid relation" );
00542 TEAGN_TRUE_OR_THROW(
00543 ( TePDIUtils::TeRelation( TeCoord2D( 4.0, 4.0 ), ti ) == TeOUTSIDE ),
00544 "Invalid relation" );
00545 }
00546
00547
00548 void makeSegmentSet_test()
00549 {
00550 TeLine2D l1;
00551 l1.add( TeCoord2D( 0,0 ) );
00552 l1.add( TeCoord2D( 1,0 ) );
00553 l1.add( TeCoord2D( 0,1 ) );
00554 l1.add( TeCoord2D( 0,0 ) );
00555
00556 TeLinearRing lr1( l1 );
00557
00558 TePolygon p1;
00559 p1.add( lr1 );
00560
00561 TeLineSet ls1;
00562 TePDIUtils::makeSegmentSet( p1, ls1 );
00563
00564 TEAGN_TRUE_OR_THROW( ( ls1.size() == 3 ), "Invalid line set size" );
00565
00566 TEAGN_TRUE_OR_THROW( ( ls1[ 0 ].size() == 2 ), "Invalid segment size" );
00567 TEAGN_TRUE_OR_THROW( ( ls1[ 1 ].size() == 2 ), "Invalid segment size" );
00568 TEAGN_TRUE_OR_THROW( ( ls1[ 2 ].size() == 2 ), "Invalid segment size" );
00569
00570 TEAGN_TRUE_OR_THROW( ( ls1[ 0 ][ 0 ] == TeCoord2D( 0, 0 ) ),
00571 "Invalid point" );
00572 TEAGN_TRUE_OR_THROW( ( ls1[ 0 ][ 1 ] == TeCoord2D( 1, 0 ) ),
00573 "Invalid point" );
00574
00575 TEAGN_TRUE_OR_THROW( ( ls1[ 1 ][ 0 ] == TeCoord2D( 1, 0 ) ),
00576 "Invalid point" );
00577 TEAGN_TRUE_OR_THROW( ( ls1[ 1 ][ 1 ] == TeCoord2D( 0, 1 ) ),
00578 "Invalid point" );
00579
00580 TEAGN_TRUE_OR_THROW( ( ls1[ 2 ][ 0 ] == TeCoord2D( 0, 1 ) ),
00581 "Invalid point" );
00582 TEAGN_TRUE_OR_THROW( ( ls1[ 2 ][ 1 ] == TeCoord2D( 0, 0 ) ),
00583 "Invalid point" );
00584 }
00585
00586
00587 void TeSegSetIntersection_test()
00588 {
00589 {
00590
00591
00592 TeLine2D line1;
00593 line1.add( TeCoord2D( -1, -1 ) );
00594 line1.add( TeCoord2D( 1, 1 ) );
00595
00596 TeLineSet ls1;
00597 ls1.add( line1 );
00598
00599 TeLine2D line2;
00600 line2.add( TeCoord2D( -1, 1 ) );
00601 line2.add( TeCoord2D( 1, -1 ) );
00602
00603 TeLineSet ls2;
00604 ls2.add( line2 );
00605
00606 TePointSet ps1;
00607 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00608
00609 TEAGN_TRUE_OR_THROW( ( ps1.size() == 1 ), "Invalid point set size" )
00610 TEAGN_TRUE_OR_THROW( ( ps1[ 0 ].elem() == TeCoord2D( 0, 0 ) ),
00611 "Invalid intersection point" )
00612 }
00613
00614 {
00615
00616
00617 TeLine2D line1;
00618 line1.add( TeCoord2D( -1, 0 ) );
00619 line1.add( TeCoord2D( 1, 0 ) );
00620
00621 TeLineSet ls1;
00622 ls1.add( line1 );
00623
00624 TeLine2D line2;
00625 line2.add( TeCoord2D( 0, 1 ) );
00626 line2.add( TeCoord2D( 0, -1 ) );
00627
00628 TeLineSet ls2;
00629 ls2.add( line2 );
00630
00631 TePointSet ps1;
00632 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00633
00634 TEAGN_TRUE_OR_THROW( ( ps1.size() == 1 ), "Invalid point set size" )
00635 TEAGN_TRUE_OR_THROW( ( ps1[ 0 ].elem() == TeCoord2D( 0, 0 ) ),
00636 "Invalid intersection point" )
00637 }
00638
00639 {
00640
00641
00642 TeLine2D line1;
00643 line1.add( TeCoord2D( 0, 1 ) );
00644 line1.add( TeCoord2D( 0, -1 ) );
00645
00646 TeLineSet ls1;
00647 ls1.add( line1 );
00648
00649 TeLine2D line2;
00650 line2.add( TeCoord2D( -1, -1 ) );
00651 line2.add( TeCoord2D( 1, 1 ) );
00652
00653 TeLineSet ls2;
00654 ls2.add( line2 );
00655
00656 TePointSet ps1;
00657 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00658
00659 TEAGN_TRUE_OR_THROW( ( ps1.size() == 1 ), "Invalid point set size" )
00660 TEAGN_TRUE_OR_THROW( ( ps1[ 0 ].elem() == TeCoord2D( 0, 0 ) ),
00661 "Invalid intersection point" )
00662 }
00663
00664 {
00665
00666
00667 TeLine2D line1;
00668 line1.add( TeCoord2D( -1, -1 ) );
00669 line1.add( TeCoord2D( 1, 1 ) );
00670
00671 TeLineSet ls1;
00672 ls1.add( line1 );
00673
00674 TeLine2D line2;
00675 line2.add( TeCoord2D( 0, 1 ) );
00676 line2.add( TeCoord2D( 0, -1 ) );
00677
00678 TeLineSet ls2;
00679 ls2.add( line2 );
00680
00681 TePointSet ps1;
00682 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00683
00684 TEAGN_TRUE_OR_THROW( ( ps1.size() == 1 ), "Invalid point set size" )
00685 TEAGN_TRUE_OR_THROW( ( ps1[ 0 ].elem() == TeCoord2D( 0, 0 ) ),
00686 "Invalid intersection point" )
00687 }
00688
00689 {
00690
00691
00692 TeLine2D line1;
00693 line1.add( TeCoord2D( 0, 1 ) );
00694 line1.add( TeCoord2D( 0, 1 ) );
00695
00696 TeLineSet ls1;
00697 ls1.add( line1 );
00698
00699 TeLine2D line2;
00700 line2.add( TeCoord2D( 0, 1 ) );
00701 line2.add( TeCoord2D( 0, 1 ) );
00702
00703 TeLineSet ls2;
00704 ls2.add( line2 );
00705
00706 TePointSet ps1;
00707 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00708
00709 TEAGN_TRUE_OR_THROW( ( ps1.size() == 0 ), "Invalid point set size" )
00710 }
00711
00712 {
00713
00714
00715 TeLine2D line1;
00716 line1.add( TeCoord2D( -1, 1 ) );
00717 line1.add( TeCoord2D( 1, 1 ) );
00718
00719 TeLineSet ls1;
00720 ls1.add( line1 );
00721
00722 TeLine2D line2;
00723 line2.add( TeCoord2D( -1, -1 ) );
00724 line2.add( TeCoord2D( 1, -1 ) );
00725
00726 TeLineSet ls2;
00727 ls2.add( line2 );
00728
00729 TePointSet ps1;
00730 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00731
00732 TEAGN_TRUE_OR_THROW( ( ps1.size() == 0 ), "Invalid point set size" )
00733 }
00734
00735 {
00736
00737
00738 TeLine2D line1;
00739 line1.add( TeCoord2D( 0, 0 ) );
00740 line1.add( TeCoord2D( 2, 2 ) );
00741
00742 TeLineSet ls1;
00743 ls1.add( line1 );
00744
00745 TeLine2D line2;
00746 line2.add( TeCoord2D( 1, 0 ) );
00747 line2.add( TeCoord2D( 2, 0 ) );
00748
00749 TeLineSet ls2;
00750 ls2.add( line2 );
00751
00752 TePointSet ps1;
00753 TePDIUtils::TeSegSetIntersection( ls1, ls2, ps1 );
00754
00755 TEAGN_TRUE_OR_THROW( ( ps1.size() == 0 ), "Invalid point set size" )
00756 }
00757
00758 }
00759
00760
00761 void getBandMinMaxValues_test()
00762 {
00763 TePDITypes::TePDIRasterPtrType RAMRaster;
00764
00765 TeRasterParams params;
00766 params.nBands( 1 );
00767 params.nlines_ = 1;
00768 params.ncols_ = 3;
00769 params.setDataType( TeUNSIGNEDCHAR, -1 );
00770
00771 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster, params,
00772 TePDIUtils::TePDIUtilsAutoMemPol ), "RAM Raster Allocation error" );
00773
00774 TEAGN_TRUE_OR_THROW( RAMRaster->setElement( 0, 0, 0.0, 0 ),
00775 "setElement error" );
00776 TEAGN_TRUE_OR_THROW( RAMRaster->setElement( 1, 0, 1.0, 0 ),
00777 "setElement error" );
00778 TEAGN_TRUE_OR_THROW( RAMRaster->setElement( 2, 0, 2.0, 0 ),
00779 "setElement error" );
00780
00781 double min = -1.0;
00782 double max = 10.0;
00783 TePDIUtils::getBandMinMaxValues( RAMRaster, 0, false, 0, min, max );
00784
00785 TEAGN_CHECK_EPS( min, 0.0, 0.0, "invalid min value" )
00786 TEAGN_CHECK_EPS( max, 2.0, 0.0, "invalid max value" )
00787 }
00788
00789
00790 void convert2MultiBand_test()
00791 {
00792 TePDITypes::TePDIRasterPtrType RAMRaster;
00793
00794 TeRasterParams params;
00795 params.nBands( 1 );
00796 params.setDataType( TeUNSIGNEDCHAR, -1 );
00797
00798 TeProjectionParams projparams;
00799 projparams.name = "NoProjection";
00800 TeSharedPtr< TeProjection > proj( TeProjectionFactory::make(
00801 projparams ) );
00802 params.projection( proj.nakedPointer() );
00803
00804 params.setNLinesNColumns( 1, 3 );
00805
00806 params.setPhotometric( TeRasterParams::TePallete );
00807
00808 params.lutr_.push_back( 255 );
00809 params.lutg_.push_back( 0 );
00810 params.lutb_.push_back( 0 );
00811
00812 params.lutr_.push_back( 0 );
00813 params.lutg_.push_back( 255 );
00814 params.lutb_.push_back( 0 );
00815
00816 params.lutr_.push_back( 0 );
00817 params.lutg_.push_back( 0 );
00818 params.lutb_.push_back( 255 );
00819
00820 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( RAMRaster, params,
00821 TePDIUtils::TePDIUtilsAutoMemPol ), "RAM Raster Allocation error" );
00822
00823 TEAGN_TRUE_OR_THROW( RAMRaster->setElement( 0, 0, 0, 0),
00824 "setElement error" );
00825 TEAGN_TRUE_OR_THROW( RAMRaster->setElement( 1, 0, 1, 0),
00826 "setElement error" );
00827 TEAGN_TRUE_OR_THROW( RAMRaster->setElement( 2, 0, 2, 0),
00828 "setElement error" );
00829
00830 TePDITypes::TePDIRasterPtrType RAMRaster2;
00831
00832 TEAGN_TRUE_OR_THROW( TePDIUtils::convert2MultiBand( RAMRaster, true,
00833 RAMRaster2 ), "MultiBand conversion error" );
00834
00835 TEAGN_TRUE_OR_THROW( RAMRaster2.isActive(), "Inactive pointer" )
00836 TEAGN_TRUE_OR_THROW( ( RAMRaster2->params().nlines_ == 1 ),
00837 "Invalid lines" )
00838 TEAGN_TRUE_OR_THROW( ( RAMRaster2->params().ncols_ == 3 ),
00839 "Invalid columns" )
00840 TEAGN_TRUE_OR_THROW( ( RAMRaster2->params().nBands() == 3 ),
00841 "Invalid lines" )
00842
00843 TEAGN_TRUE_OR_THROW( ( RAMRaster2->params().photometric_[ 0 ] ==
00844 TeRasterParams::TeMultiBand ), "Invalid photometric interpretation" )
00845 TEAGN_TRUE_OR_THROW( ( RAMRaster2->params().photometric_[ 1 ] ==
00846 TeRasterParams::TeMultiBand ), "Invalid photometric interpretation" )
00847 TEAGN_TRUE_OR_THROW( ( RAMRaster2->params().photometric_[ 2 ] ==
00848 TeRasterParams::TeMultiBand ), "Invalid photometric interpretation" )
00849
00850 double value = -1.0;
00851
00852 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 0,0, value, 0),
00853 "getElement error" )
00854 TEAGN_CHECK_EPS( value, 255, 0, "wrong value" );
00855
00856 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 0,0, value, 1),
00857 "getElement error" )
00858 TEAGN_CHECK_EPS( value, 0, 0, "wrong value" );
00859
00860 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 0,0, value, 2),
00861 "getElement error" )
00862 TEAGN_CHECK_EPS( value, 0, 0, "wrong value" );
00863
00864
00865 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 1,0, value, 0),
00866 "getElement error" )
00867 TEAGN_CHECK_EPS( value, 0, 0, "wrong value" );
00868
00869 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 1,0, value, 1),
00870 "getElement error" )
00871 TEAGN_CHECK_EPS( value, 255, 0, "wrong value" );
00872
00873 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 1,0, value, 2),
00874 "getElement error" )
00875 TEAGN_CHECK_EPS( value, 0, 0, "wrong value" );
00876
00877
00878 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 2,0, value, 0),
00879 "getElement error" )
00880 TEAGN_CHECK_EPS( value, 0, 0, "wrong value" );
00881
00882 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 2,0, value, 1),
00883 "getElement error" )
00884 TEAGN_CHECK_EPS( value, 0, 0, "wrong value" );
00885
00886 TEAGN_TRUE_OR_THROW( RAMRaster2->getElement( 2,0, value, 2),
00887 "getElement error" )
00888 TEAGN_CHECK_EPS( value, 255, 0, "wrong value" );
00889 }
00890
00891
00892 void compareGeometryPoints_tests()
00893 {
00894 TePolygonSet ps1;
00895 {
00896 TeLinearRing lr;
00897 lr.add( TeCoord2D( 0, 0 ) );
00898 lr.add( TeCoord2D( 1, 0 ) );
00899 lr.add( TeCoord2D( 1, 1 ) );
00900 lr.add( TeCoord2D( 0, 1 ) );
00901 lr.add( TeCoord2D( 0, 0 ) );
00902
00903 TePolygon pol;
00904 pol.add( lr );
00905
00906 ps1.add( pol );
00907 }
00908
00909 TePolygonSet ps2;
00910 {
00911 TeLinearRing lr;
00912 lr.add( TeCoord2D( 0, 0 ) );
00913 lr.add( TeCoord2D( 1, 0 ) );
00914 lr.add( TeCoord2D( 1, 1 ) );
00915 lr.add( TeCoord2D( 0, 1 ) );
00916 lr.add( TeCoord2D( 0, 0 ) );
00917
00918 TePolygon pol;
00919 pol.add( lr );
00920
00921 ps2.add( pol );
00922 }
00923
00924 TEAGN_TRUE_OR_THROW( TePDIUtils::compareGeometryPoints( ps1, ps2 ),
00925 "Invalid compareGeometryPoints result" )
00926 }
00927
00928
00929 void resampleRaster_test()
00930 {
00931 TePDITypes::TePDIRasterPtrType input_raster;
00932 TePDITypes::TePDIRasterPtrType output_raster;
00933
00934 TeRasterParams input_raster_params;
00935 input_raster_params.nBands( 1 );
00936 input_raster_params.setDataType( TeDOUBLE, -1 );
00937 input_raster_params.setNLinesNColumns( 4, 4 );
00938
00939 TeRasterParams output_raster_params;
00940 output_raster_params.nBands( 1 );
00941 output_raster_params.setDataType( TeDOUBLE, -1 );
00942 output_raster_params.setNLinesNColumns( 2, 2 );
00943
00944 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( input_raster,
00945 input_raster_params, TePDIUtils::TePDIUtilsAutoMemPol ),
00946 "RAM Raster Allocation error" );
00947 TEAGN_TRUE_OR_THROW( TePDIUtils::TeAllocRAMRaster( output_raster,
00948 output_raster_params, TePDIUtils::TePDIUtilsAutoMemPol ),
00949 "RAM Raster Allocation error" );
00950
00951 TEAGN_TRUE_OR_THROW( input_raster->setElement( 0, 0, 1.0, 0 ),
00952 "setElement error" );
00953 TEAGN_TRUE_OR_THROW( input_raster->setElement( 1, 0, 1.0, 0 ),
00954 "setElement error" );
00955 TEAGN_TRUE_OR_THROW( input_raster->setElement( 2, 0, 1.0, 0 ),
00956 "setElement error" );
00957 TEAGN_TRUE_OR_THROW( input_raster->setElement( 3, 0, 1.0, 0 ),
00958 "setElement error" );
00959
00960 TEAGN_TRUE_OR_THROW( input_raster->setElement( 0, 1, 1.0, 0 ),
00961 "setElement error" );
00962 TEAGN_TRUE_OR_THROW( input_raster->setElement( 1, 1, 1.0, 0 ),
00963 "setElement error" );
00964 TEAGN_TRUE_OR_THROW( input_raster->setElement( 2, 1, 1.0, 0 ),
00965 "setElement error" );
00966 TEAGN_TRUE_OR_THROW( input_raster->setElement( 3, 1, 1.0, 0 ),
00967 "setElement error" );
00968
00969 TEAGN_TRUE_OR_THROW( input_raster->setElement( 0, 2, 1.0, 0 ),
00970 "setElement error" );
00971 TEAGN_TRUE_OR_THROW( input_raster->setElement( 1, 2, 1.0, 0 ),
00972 "setElement error" );
00973 TEAGN_TRUE_OR_THROW( input_raster->setElement( 2, 2, 1.0, 0 ),
00974 "setElement error" );
00975 TEAGN_TRUE_OR_THROW( input_raster->setElement( 3, 2, 1.0, 0 ),
00976 "setElement error" );
00977
00978 TEAGN_TRUE_OR_THROW( input_raster->setElement( 0, 3, 1.0, 0 ),
00979 "setElement error" );
00980 TEAGN_TRUE_OR_THROW( input_raster->setElement( 1, 3, 1.0, 0 ),
00981 "setElement error" );
00982 TEAGN_TRUE_OR_THROW( input_raster->setElement( 2, 3, 1.0, 0 ),
00983 "setElement error" );
00984 TEAGN_TRUE_OR_THROW( input_raster->setElement( 3, 3, 1.0, 0 ),
00985 "setElement error" );
00986
00987 double resolution_ratio = 2.0;
00988
00989 TEAGN_TRUE_OR_THROW( TePDIUtils::resampleRasterByRes( input_raster,
00990 output_raster,
00991 resolution_ratio , resolution_ratio,
00992 TePDIInterpolator::NNMethod,
00993 true ),
00994 "Raster resample error" )
00995
00996
00997 TEAGN_CHECK_EPS( output_raster->params().nlines_,
00998 ( input_raster->params().nlines_ / resolution_ratio ), 0.0,
00999 "invalid number of lines" )
01000 TEAGN_CHECK_EPS( output_raster->params().ncols_,
01001 ( input_raster->params().ncols_ / resolution_ratio ), 0.0,
01002 "invalid number of columns" )
01003 TEAGN_CHECK_EPS( output_raster->params().resx_, 3, 0.0,
01004 "invalid X resolution" )
01005 TEAGN_CHECK_EPS( output_raster->params().resy_, 3, 0.0,
01006 "invalid Y() resolution" )
01007 TEAGN_CHECK_EPS( output_raster->params().nBands(),
01008 input_raster->params().nBands(), 0.0,
01009 "invalid bands number" )
01010
01011 double value = 0;
01012
01013 TEAGN_TRUE_OR_THROW( output_raster->getElement( 0, 0, value, 0 ),
01014 "getElement error" )
01015 TEAGN_CHECK_EPS( value, 1.0, 0.0, "Incorrect value" )
01016
01017 TEAGN_TRUE_OR_THROW( output_raster->getElement( 0, 1, value, 0 ),
01018 "getElement error" )
01019 TEAGN_CHECK_EPS( value, 1.0, 0.0, "Incorrect value" )
01020
01021 TEAGN_TRUE_OR_THROW( output_raster->getElement( 1, 0, value, 0 ),
01022 "getElement error" )
01023 TEAGN_CHECK_EPS( value, 1.0, 0.0, "Incorrect value" )
01024
01025 TEAGN_TRUE_OR_THROW( output_raster->getElement( 1, 1, value, 0 ),
01026 "getElement error" )
01027 TEAGN_CHECK_EPS( value, 1.0, 0.0, "Incorrect value" )
01028 }
01029
01030
01031 int main()
01032 {
01033 TEAGN_LOGMSG( "Test started." );
01034
01035 TeStdIOProgress pi;
01036 TeProgress::setProgressInterf( dynamic_cast< TeProgressBase* >( &pi ) );
01037
01038 TeInitRasterDecoders();
01039
01040 buildDetailedBox_test();
01041 buildDetailedBBox_test();
01042 resampleRaster_test();
01043 getBandMinMaxValues_test();
01044 makeSegmentSet_test();
01045 TeSegSetIntersection_test();
01046 TeRelation_test();
01047 TeAllocRAMRaster_usingparams_test();
01048 TeAllocRAMRaster1_test();
01049 TeAllocRAMRaster_templateraster_test();
01050 raster_compare_test();
01051 TeGetRasterMinMaxBounds_test();
01052 TeGetRasterReqMem_test();
01053 IsFloatBand_test();
01054 TeRaster2Geotiff_test();
01055 TeRaster2RGBGeotiff_test();
01056 TeRaster2Geotiff_deprecated_test();
01057 TeRaster2Jpeg_test();
01058 TeAllocMemoryMappedRaster_test();
01059 convert2MultiBand_test();
01060 compareGeometryPoints_tests();
01061 reprojectRaster_test();
01062
01063 TEAGN_LOGMSG( "Test OK." );
01064 return EXIT_SUCCESS;
01065 }