From 94f0dfce633ebc7a30b89024c3e27be8cbc28fde Mon Sep 17 00:00:00 2001 From: Mickael Savinaud <mickael.savinaud@c-s.fr> Date: Tue, 17 May 2011 18:29:14 +0200 Subject: [PATCH] TEST: add tests about write GCP, ProjRef and GeoTransform via GDAL only for tiff and hdr file --- Testing/Code/IO/CMakeLists.txt | 267 ++++++++++++++++++ .../IO/otbGDALImageIOTestWriteMetadata.cxx | 246 ++++++++++++++++ Testing/Code/IO/otbIOTests6.cxx | 1 + 3 files changed, 514 insertions(+) create mode 100644 Testing/Code/IO/otbGDALImageIOTestWriteMetadata.cxx diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt index ffe09e93c0..33db126dc2 100644 --- a/Testing/Code/IO/CMakeLists.txt +++ b/Testing/Code/IO/CMakeLists.txt @@ -663,6 +663,272 @@ ADD_TEST(ioTuGDALImageIOCanWrite_TIFF ${IO_TESTS6} otbGDALImageIOTestCanWrite ${INPUTDATA}/testGDALWriter.tif) ADD_TEST(ioTuGDALImageIOCanWrite_HFA ${IO_TESTS6} otbGDALImageIOTestCanWrite ${INPUTDATA}/HFAGeoreferenced.img) + +# Pb with copy of some infos into the dataset +# cases with no ProjRef +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_None ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_None.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_None.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_None.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_None.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_None.txt + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_NoProjRef_NoGCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_NoGCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_NoGCP_GeoTransfo_ID.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_NoGCP_GeoTransfo_ID.txt + -setGeoTransform_ID + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_NoProjRef_NoGCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_NoGCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_NoGCP_GeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_NoGCP_GeoTransfo.txt + -setGeoTransform + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_NoProjRef_GCP_NoGeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_GCP_NoGeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_GCP_NoGeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_GCP_NoGeoTransfo.txt + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_NoProjRef_GCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_GCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_GCP_GeoTransfo_ID.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_GCP_GeoTransfo_ID.txt + -setGeoTransform_ID + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_NoProjRef_GCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_GCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_GCP_GeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_NoProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_NoProjRef_GCP_GeoTransfo.txt + -setGeoTransform + -setGCP + ) + +# cases with ProjRef +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_ProjRef_NoGCP_NoGeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_NoGCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_NoGCP_NoGeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_NoGCP_NoGeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_NoGCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_NoGCP_NoGeoTransfo.txt + -setProjectionRef + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_ProjRef_NoGCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_NoGCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_NoGCP_GeoTransfo_ID.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_NoGCP_GeoTransfo_ID.txt + -setProjectionRef + -setGeoTransform_ID + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_ProjRef_NoGCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_NoGCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_NoGCP_GeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_NoGCP_GeoTransfo.txt + -setProjectionRef + -setGeoTransform + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_ProjRef_GCP_NoGeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_GCP_NoGeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_GCP_NoGeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_GCP_NoGeoTransfo.txt + -setProjectionRef + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_ProjRef_GCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_GCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_GCP_GeoTransfo_ID.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_GCP_GeoTransfo_ID.txt + -setProjectionRef + -setGeoTransform_ID + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_TIFF_ProjRef_GCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_GCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_GCP_GeoTransfo.tif + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_TIFF_ProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_TIFF_ProjRef_GCP_GeoTransfo.txt + -setProjectionRef + -setGeoTransform + -setGCP + ) + +# Pb with copy of some infos into the dataset (HDR) +# cases with no ProjRef +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_None ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_None.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_None.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_None.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_None.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_None.txt + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_NoProjRef_NoGCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_NoGCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_NoGCP_GeoTransfo_ID.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_NoGCP_GeoTransfo_ID.txt + -setGeoTransform_ID + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_NoProjRef_NoGCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_NoGCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_NoGCP_GeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_NoGCP_GeoTransfo.txt + -setGeoTransform + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_NoProjRef_GCP_NoGeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_GCP_NoGeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_GCP_NoGeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_GCP_NoGeoTransfo.txt + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_NoProjRef_GCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_GCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_GCP_GeoTransfo_ID.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_GCP_GeoTransfo_ID.txt + -setGeoTransform_ID + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_NoProjRef_GCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_GCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_NoProjRef_GCP_GeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_NoProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_NoProjRef_GCP_GeoTransfo.txt + -setGeoTransform + -setGCP + ) + +# cases with ProjRef +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_ProjRef_NoGCP_NoGeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_NoGCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_NoGCP_NoGeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_NoGCP_NoGeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_NoGCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_NoGCP_NoGeoTransfo.txt + -setProjectionRef + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_ProjRef_NoGCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_NoGCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_NoGCP_GeoTransfo_ID.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_NoGCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_NoGCP_GeoTransfo_ID.txt + -setProjectionRef + -setGeoTransform_ID + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_ProjRef_NoGCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_NoGCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_NoGCP_GeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_NoGCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_NoGCP_GeoTransfo.txt + -setProjectionRef + -setGeoTransform + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_ProjRef_GCP_NoGeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_GCP_NoGeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_GCP_NoGeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_GCP_NoGeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_GCP_NoGeoTransfo.txt + -setProjectionRef + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_ProjRef_GCP_GeoTransfo_ID ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_GCP_GeoTransfo_ID.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_GCP_GeoTransfo_ID.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_GCP_GeoTransfo_ID.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_GCP_GeoTransfo_ID.txt + -setProjectionRef + -setGeoTransform_ID + -setGCP + ) +ADD_TEST(ioTvGDALImageIOWriteMetadata_HDR_ProjRef_GCP_GeoTransfo ${IO_TESTS6} + --compare-ascii ${NOTOL} + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_GCP_GeoTransfo.txt + otbGDALImageIOTestWriteMetadata + ${TEMP}/ioTvGDALImageIOWriteMetadata_ProjRef_GCP_GeoTransfo.hdr + ${TEMP}/ioTvGDALImageIOWriteMetadataCreate_HDR_ProjRef_GCP_GeoTransfo.txt + ${TEMP}/ioTvGDALImageIOWriteMetadataWR_HDR_ProjRef_GCP_GeoTransfo.txt + -setProjectionRef + -setGeoTransform + -setGCP + ) # ------- otb::ONERAImageIO ------------------------------ @@ -3264,6 +3530,7 @@ otbImageFileWriterONERAComplex.cxx otbImageFileWriterStreamingONERAComplex.cxx otbMSTARImageIOTestCanRead.cxx otbImageFileReaderMSTAR.cxx +otbGDALImageIOTestWriteMetadata.cxx ) SET(BasicIO_SRCS7 otbIOTests7.cxx diff --git a/Testing/Code/IO/otbGDALImageIOTestWriteMetadata.cxx b/Testing/Code/IO/otbGDALImageIOTestWriteMetadata.cxx new file mode 100644 index 0000000000..0c54a1ce71 --- /dev/null +++ b/Testing/Code/IO/otbGDALImageIOTestWriteMetadata.cxx @@ -0,0 +1,246 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include <iostream> +#include <fstream> + +#include "gdal_priv.h" +#include "cpl_string.h" +#include "ogr_spatialref.h" + + +int otbGDALImageIOTestWriteMetadata(int argc, char * argv[]) +{ + // Parameters + char* pszDstFilename= argv[1]; + bool setGCP = false; + bool setProjectionRef = false; + bool setGeoTransform_ID = false; + bool setGeoTransform = false; + std::cout << argc <<std::endl; + for (unsigned int itOption = 0 ; itOption < (unsigned int)argc-4 ; itOption++) + { + std::string arg = argv[itOption+4]; + std::cout << "arg: " << arg << std::endl; + if ( arg.compare("-setGCP") == 0 ) + { + std::cout << "-setGCP" << std::endl; + setGCP = true; + } + if (arg.compare("-setGeoTransform_ID") == 0) + { + std::cout << "-setGeoTransform_ID" << std::endl; + setGeoTransform_ID = true; + } + if (arg.compare("-setGeoTransform") == 0) + { + std::cout << "-setGeoTransform" << std::endl; + setGeoTransform = true; + } + if (arg.compare("-setProjectionRef") == 0) + { + std::cout << "-setProjectionRef" << std::endl; + setProjectionRef = true; + } + } + + const char *pszFormat;// = "GTiff"; + // Detect format with the extension + std::string filename = pszDstFilename; + if ( filename.compare(filename.size()-4, 4,".tif") == 0 ) + { + pszFormat = "GTiff"; + } + else if (filename.compare(filename.size()-4,4,".hdr") == 0 ) + { + pszFormat = "ENVI"; + filename.erase(filename.size()-4,4); + std::cout << filename <<std::endl; + } + else + { + return EXIT_FAILURE; + } + + std::cout << "format: " << pszFormat <<std::endl; + + // Check the driver used + GDALDriver *poDriver; + char **papszMetadata; + + GDALAllRegister(); + poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat); + + if( poDriver == NULL ) + { + std::cout << "impossible to get the driver" <<std::endl; + return EXIT_FAILURE; + } + + // Format selected support create method ? + papszMetadata = poDriver->GetMetadata(); + if( CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ) ) + { + std::cout << "Driver " << pszFormat << " supports Create() method." << std::endl; + } + else + { + std::cout << "Driver " << pszFormat << " does not support Create() method." << std::endl; + return EXIT_FAILURE; + } + + GDALDataset *poDstDS; + char **papszOptions = NULL; + + // Create dataset + poDstDS = poDriver->Create( filename.c_str(), 128, 128, 1, GDT_Byte, + papszOptions ); + + // Set ProjectionRef + OGRSpatialReference oSRS; + char *pszSRS_WKT = NULL; + oSRS.SetWellKnownGeogCS( "WGS84" ); + oSRS.exportToWkt( &pszSRS_WKT ); + if (setProjectionRef) + { + poDstDS->SetProjection( pszSRS_WKT ); + } + + // Set GeoTransform + if (setGeoTransform_ID || setGeoTransform) + { + double adfGeoTransform[6] = { 0, 1, 0, 0, 0, 1 }; + if (setGeoTransform) + { + adfGeoTransform[0] = 64; + adfGeoTransform[3] = 32; + } + poDstDS->SetGeoTransform( adfGeoTransform ); + } + + // Set GCP + if (setGCP) + { + unsigned int gcpCount = 1; + GDAL_GCP * gdalGcps = new GDAL_GCP[gcpCount]; + + for (unsigned int gcpIndex = 0; gcpIndex < gcpCount; ++gcpIndex) + { + gdalGcps[gcpIndex].pszId = const_cast<char *> ("1"); + gdalGcps[gcpIndex].pszInfo = const_cast<char *> (""); + gdalGcps[gcpIndex].dfGCPPixel = 0.5; + gdalGcps[gcpIndex].dfGCPLine = 0.5; + gdalGcps[gcpIndex].dfGCPX = 1.35409622400109; + gdalGcps[gcpIndex].dfGCPY = 43.6544262050905; + gdalGcps[gcpIndex].dfGCPZ = 0; + + } + poDstDS->SetGCPs(gcpCount, gdalGcps, pszSRS_WKT); + } + + // Write data into dataset + GDALRasterBand *poBand; + GByte abyRaster[128*128]; + for (unsigned int it=0; it < 128*128; it++) + { + abyRaster[it] = 0; + } + + poBand = poDstDS->GetRasterBand(1); + poBand->RasterIO( GF_Write, 0, 0, 128, 128, + abyRaster, 128, 128, GDT_Byte, 0, 0 ); + + + // Get some informations from dataset + std::ofstream fileCreate; + fileCreate.open(argv[2]); + fileCreate << "Projection Ref: "<< poDstDS->GetProjectionRef() << "\n" ; + double GT_Create[6]; + if (poDstDS->GetGeoTransform(GT_Create) == CE_None) + { + fileCreate <<"GeoTransform: "<< GT_Create[0] << ", " << GT_Create[1] << ", " + << GT_Create[2] << ", " << GT_Create[3] << ", " + << GT_Create[4] << ", " << GT_Create[5] << "\n" ; + } + else + { + fileCreate << "No GeoTransform \n" ; + } + + fileCreate << "GCP Projection Ref: "<< poDstDS->GetGCPProjection()<< "\n" ; + fileCreate << "GCP Count: " << poDstDS->GetGCPCount()<< "\n" ; + const GDAL_GCP * gdalGcpCreate = poDstDS->GetGCPs(); + for (int gcpIndex = 0; gcpIndex < poDstDS->GetGCPCount(); ++gcpIndex) + { + fileCreate << "GCP[" << gcpIndex <<"].pszId: " << gdalGcpCreate->pszId<< "\n" ; + fileCreate << "GCP[" << gcpIndex <<"].pszInfo: " << gdalGcpCreate->pszInfo<< "\n" ; + fileCreate << "GCP[" << gcpIndex <<"].dfGCPPixel: "<< gdalGcpCreate->dfGCPPixel<< "\n" ; + fileCreate << "GCP[" << gcpIndex <<"].dfGCPLine: " << gdalGcpCreate->dfGCPLine<< "\n" ; + fileCreate << "GCP[" << gcpIndex <<"].m_GPCX: " << gdalGcpCreate->dfGCPX<< "\n" ; + fileCreate << "GCP[" << gcpIndex <<"].m_GPCY: " << gdalGcpCreate->dfGCPY<< "\n" ; + fileCreate << "GCP[" << gcpIndex <<"].m_GPCZ: " << gdalGcpCreate->dfGCPZ<< "\n" ; + } + fileCreate.close(); + + + // Once we're done, close properly the dataset + GDALClose( (GDALDatasetH) poDstDS ); + CPLFree( pszSRS_WKT ); + + //************** + // Open File + GDALDataset *poDataset; + + poDataset = (GDALDataset *) GDALOpen( filename.c_str(), GA_ReadOnly ); + if( poDataset == NULL ) + return EXIT_FAILURE; + + // Get some informations from file + std::ofstream fileWriteRead; + fileWriteRead.open(argv[3]); + fileWriteRead << "Projection Ref: "<< poDataset->GetProjectionRef()<< "\n" ; + double GT[6]; + if (poDataset->GetGeoTransform(GT) == CE_None) + { + fileWriteRead <<"GeoTransform: "<< GT[0] << ", " << GT[1] << ", " + << GT[2] << ", " << GT[3] << ", " + << GT[4] << ", " << GT[5] << "\n" ; + } + else + { + fileWriteRead << "No GeoTransform \n" ; + } + + fileWriteRead << "GCP Projection Ref: "<< poDataset->GetGCPProjection()<< "\n" ; + fileWriteRead << "GCP Count: " << poDataset->GetGCPCount()<< "\n" ; + const GDAL_GCP * gdalGcp = poDataset->GetGCPs(); + for (int gcpIndex = 0; gcpIndex < poDataset->GetGCPCount(); ++gcpIndex) + { + fileWriteRead << "GCP[" << gcpIndex <<"].pszId: " << gdalGcp->pszId<< "\n" ; + fileWriteRead << "GCP[" << gcpIndex <<"].pszInfo: " << gdalGcp->pszInfo<< "\n" ; + fileWriteRead << "GCP[" << gcpIndex <<"].dfGCPPixel: "<< gdalGcp->dfGCPPixel<< "\n" ; + fileWriteRead << "GCP[" << gcpIndex <<"].dfGCPLine: " << gdalGcp->dfGCPLine<< "\n" ; + fileWriteRead << "GCP[" << gcpIndex <<"].m_GPCX: " << gdalGcp->dfGCPX<< "\n" ; + fileWriteRead << "GCP[" << gcpIndex <<"].m_GPCY: " << gdalGcp->dfGCPY<< "\n" ; + fileWriteRead << "GCP[" << gcpIndex <<"].m_GPCZ: " << gdalGcp->dfGCPZ<< "\n" ; + } + fileWriteRead.close(); + + GDALClose(poDataset); + return EXIT_SUCCESS; +} diff --git a/Testing/Code/IO/otbIOTests6.cxx b/Testing/Code/IO/otbIOTests6.cxx index b35eadef46..3853105432 100644 --- a/Testing/Code/IO/otbIOTests6.cxx +++ b/Testing/Code/IO/otbIOTests6.cxx @@ -32,4 +32,5 @@ void RegisterTests() REGISTER_TEST(otbImageFileWriterStreamingONERAComplex); REGISTER_TEST(otbMSTARImageIOTestCanRead); REGISTER_TEST(otbImageFileReaderMSTAR); + REGISTER_TEST(otbGDALImageIOTestWriteMetadata); } -- GitLab