diff --git a/Code/IO/otbImageFileWriter.txx b/Code/IO/otbImageFileWriter.txx index d04d4ae503820935e8906f7406d7bc9b5e2106ed..827a223150ba07abdf5e9bad496679701067eb73 100644 --- a/Code/IO/otbImageFileWriter.txx +++ b/Code/IO/otbImageFileWriter.txx @@ -24,6 +24,16 @@ #include "itkObjectFactoryBase.h" #include "vnl/vnl_vector.h" +#include "imaging/ossimImageHandlerRegistry.h" +#include "ossim/imaging/ossimImageHandlerSarFactory.h" +#include "imaging/ossimImageHandler.h" +#include "init/ossimInit.h" +#include "base/ossimKeywordlist.h" + +#include "itkMetaDataObject.h" +#include "otbImageKeywordlist.h" +#include "otbMetaDataKey.h" + #include "otbMacro.h" namespace otb @@ -76,6 +86,30 @@ ImageFileWriter<TInputImage> //TODO: Force ImageIO desctructor. Should be fixed once GDALImageIO //will be refactored. this->SetImageIO(NULL); + + + // Write the image keyword list if any + ossimKeywordlist geom_kwl; + ImageKeywordlist otb_kwl; + + itk::MetaDataDictionary dict = this->GetInput()->GetMetaDataDictionary(); + itk::ExposeMetaData<ImageKeywordlist>(dict, MetaDataKey::OSSIMKeywordlistKey, otb_kwl); + otb_kwl.convertToOSSIMKeywordlist(geom_kwl); + + if(geom_kwl.getSize()>0) + { + otbMsgDevMacro(<<"Exporting keywordlist ..."); + ossimImageHandlerRegistry::instance()->addFactory(ossimImageHandlerSarFactory::instance()); + ossimImageHandler* handler = ossimImageHandlerRegistry::instance()->open(ossimFilename(this->GetFileName())); + + if(!handler) + { + otbMsgDevMacro(<<"OSSIM Open Image FAILED !"); + } + handler->setImageGeometry(geom_kwl); + handler->saveImageGeometry(); + handler->close(); + } } /** diff --git a/Code/IO/otbStreamingImageFileWriter.txx b/Code/IO/otbStreamingImageFileWriter.txx index 495720c9e3497f9ecdd8e5fdad231ceba0054b9e..e63fb4a9c1449a504d7f3813894b674b85638436 100644 --- a/Code/IO/otbStreamingImageFileWriter.txx +++ b/Code/IO/otbStreamingImageFileWriter.txx @@ -26,6 +26,16 @@ #include "itkImageRegionMultidimensionalSplitter.h" #include "otbImageIOFactory.h" +#include "imaging/ossimImageHandlerRegistry.h" +#include "ossim/imaging/ossimImageHandlerSarFactory.h" +#include "imaging/ossimImageHandler.h" +#include "init/ossimInit.h" +#include "base/ossimKeywordlist.h" + +#include "itkMetaDataObject.h" +#include "otbImageKeywordlist.h" +#include "otbMetaDataKey.h" + #include "otbConfigure.h" namespace otb @@ -521,6 +531,29 @@ StreamingImageFileWriter<TInputImage> this->GetOutput(idx)->DataHasBeenGenerated(); } } + + // Write the image keyword list if any + ossimKeywordlist geom_kwl; + ImageKeywordlist otb_kwl; + + itk::MetaDataDictionary dict = this->GetInput()->GetMetaDataDictionary(); + itk::ExposeMetaData<ImageKeywordlist>(dict, MetaDataKey::OSSIMKeywordlistKey, otb_kwl); + otb_kwl.convertToOSSIMKeywordlist(geom_kwl); + + if(geom_kwl.getSize()>0) + { + otbMsgDevMacro(<<"Exporting keywordlist ..."); + ossimImageHandlerRegistry::instance()->addFactory(ossimImageHandlerSarFactory::instance()); + ossimImageHandler* handler = ossimImageHandlerRegistry::instance()->open(ossimFilename(this->GetFileName())); + + if(!handler) + { + otbMsgDevMacro(<<"OSSIM Open Image FAILED !"); + } + handler->setImageGeometry(geom_kwl); + handler->saveImageGeometry(); + handler->close(); + } /** * Release any inputs if marked for release