From e90b35d310db88d86cdc07031069202025672fd6 Mon Sep 17 00:00:00 2001
From: Patrick Imbo <patrick.imbo@c-s.fr>
Date: Mon, 14 Jun 2010 17:03:56 +0200
Subject: [PATCH] ENH: add WorldView-2 metadata reading support

---
 Code/IO/otbWorldView2ImageMetadataInterface.cxx   |  8 +++++++-
 Code/Radiometry/otbImageToLuminanceImageFilter.h  |  5 +++++
 Testing/Code/IO/CMakeLists.txt                    |  4 ++--
 Testing/Code/IO/otbImageMetadataInterfaceTest.cxx | 11 +++++++++--
 Testing/Code/Radiometry/CMakeLists.txt            |  2 +-
 5 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/Code/IO/otbWorldView2ImageMetadataInterface.cxx b/Code/IO/otbWorldView2ImageMetadataInterface.cxx
index 1fa923e616..8df1e8d0ce 100644
--- a/Code/IO/otbWorldView2ImageMetadataInterface.cxx
+++ b/Code/IO/otbWorldView2ImageMetadataInterface.cxx
@@ -243,6 +243,11 @@ WorldView2ImageMetadataInterface::GetMinute(const MetaDataDictionaryType& dict)
   separatorList = "-T:";
   ossimString keywordString = kwl.find(key.c_str());
 
+  if (keywordString == ossimString("Unknown"))
+     {
+      itkExceptionMacro("Unknown date")
+     }
+
   std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
 
   if (keywordStrings.size() <= 2) itkExceptionMacro("Invalid Minute");
@@ -439,7 +444,8 @@ WorldView2ImageMetadataInterface
      }
      else
      {
-       ossimString keywordStringAbsCalFactor = kwl.find("support_data.B_band_absCalFactor");
+//       ossimString keywordStringAbsCalFactor = kwl.find("support_data.B_band_absCalFactor");
+       ossimString keywordStringAbsCalFactor = kwl.find("band_C.abscalfactor");
        outputValuesVariableLengthVector[0] = keywordStringAbsCalFactor.toDouble();
        keywordStringAbsCalFactor = kwl.find("support_data.G_band_absCalFactor");
        outputValuesVariableLengthVector[1] = keywordStringAbsCalFactor.toDouble();
diff --git a/Code/Radiometry/otbImageToLuminanceImageFilter.h b/Code/Radiometry/otbImageToLuminanceImageFilter.h
index cf9e474e4c..0d66eb96e4 100644
--- a/Code/Radiometry/otbImageToLuminanceImageFilter.h
+++ b/Code/Radiometry/otbImageToLuminanceImageFilter.h
@@ -188,6 +188,11 @@ protected:
       m_Beta = imageMetadataInterface->GetPhysicalBias(this->GetInput()->GetMetaDataDictionary());
       }
 
+    otbMsgDevMacro(<< "Dimension: ");
+    otbMsgDevMacro(<< "m_Alpha.GetSize(): " << m_Alpha.GetSize());
+    otbMsgDevMacro(<< "m_Beta.GetSize() : " << m_Beta.GetSize());
+    otbMsgDevMacro(<< "this->GetInput()->GetNumberOfComponentsPerPixel() : " << this->GetInput()->GetNumberOfComponentsPerPixel());
+
     if ((m_Alpha.GetSize() != this->GetInput()->GetNumberOfComponentsPerPixel())
         || (m_Beta.GetSize() != this->GetInput()->GetNumberOfComponentsPerPixel()))
       {
diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index e74714abc4..ce34fc9f05 100644
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -2069,7 +2069,7 @@ ADD_TEST(ioTvImageMetadataInterfaceQBMULTest ${IO_TESTS18}
 ADD_TEST(ioTvImageMetadataInterfaceWV2PanTest ${IO_TESTS18}
 #         --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvImageMetadataInterfaceWV2RomePan.txt
 #                         ${TEMP}/ioTvImageMetadataInterfaceWV2RomePan.txt
-        otbImageMetadataInterfaceTest
+        otbImageMetadataInterfaceTest2
         ${LARGEDATA}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_PAN/09DEC10103019-P2AS-052298844010_01_P001.TIF
         ${TEMP}/ioTvImageMetadataInterfaceWV2RomePan.txt
 )
@@ -2077,7 +2077,7 @@ ADD_TEST(ioTvImageMetadataInterfaceWV2PanTest ${IO_TESTS18}
 ADD_TEST(ioTvImageMetadataInterfaceWV2MulTest ${IO_TESTS18}
 #         --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvImageMetadataInterfaceWV2RomeMul.txt
 #                         ${TEMP}/ioTvImageMetadataInterfaceWV2RomeMul.txt
-        otbImageMetadataInterfaceTest
+        otbImageMetadataInterfaceTest2
         ${LARGEDATA}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_MUL/09DEC10103019-M2AS-052298844010_01_P001.TIF
         ${TEMP}/ioTvImageMetadataInterfaceWV2RomeMul.txt
 )
diff --git a/Testing/Code/IO/otbImageMetadataInterfaceTest.cxx b/Testing/Code/IO/otbImageMetadataInterfaceTest.cxx
index 064ebac35d..64b69a6953 100644
--- a/Testing/Code/IO/otbImageMetadataInterfaceTest.cxx
+++ b/Testing/Code/IO/otbImageMetadataInterfaceTest.cxx
@@ -54,8 +54,15 @@ int otbImageMetadataInterfaceTest(int argc, char* argv[])
   std::endl;
   file << "GetPhysicalBias:    " << lImageMetadata->GetPhysicalBias(reader->GetOutput()->GetMetaDataDictionary()) <<
   std::endl;
-  file << "GetMinute:          " << lImageMetadata->GetMinute(reader->GetOutput()->GetMetaDataDictionary()) <<
-  std::endl;
+  try
+  {
+  file << "GetMinute:          " << lImageMetadata->GetMinute(reader->GetOutput()->GetMetaDataDictionary()) << std::endl;
+  }
+  catch(itk::ExceptionObject &excep)
+  {
+    std::cerr << excep.GetDescription() << endl;
+  }
+
   file << "GetHour:            " << lImageMetadata->GetHour(reader->GetOutput()->GetMetaDataDictionary()) << std::endl;
   file << "GetDay:             " << lImageMetadata->GetDay(reader->GetOutput()->GetMetaDataDictionary()) << std::endl;
   file << "GetMonth:           " << lImageMetadata->GetMonth(reader->GetOutput()->GetMetaDataDictionary()) << std::endl;
diff --git a/Testing/Code/Radiometry/CMakeLists.txt b/Testing/Code/Radiometry/CMakeLists.txt
index efb6c71131..d84e247a18 100644
--- a/Testing/Code/Radiometry/CMakeLists.txt
+++ b/Testing/Code/Radiometry/CMakeLists.txt
@@ -213,7 +213,7 @@ ADD_TEST(raTvImageToLuminanceImageFilterAutoWV2 ${RADIOMETRY_TESTS2}
   #--compare-image ${EPSILON}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoIkonos.tif
    #                       ${TEMP}/raTvImageToLuminanceImageFilterAutoIkonos.tif
         otbImageToLuminanceImageFilterAuto
-        ${LARGEINPUT}/WORLDVIEW2/VERSAILLES/052310006010_01_P001_PAN/10MAR01111601-P1BS-052310006010_01_P001.TIF
+        ${LARGEINPUT}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_MUL/09DEC10103019-M2AS-052298844010_01_P001.TIF
         ${TEMP}/raTvImageToLuminanceImageFilterAutoWV2.tif
          )
 ENDIF(OTB_DATA_USE_LARGEINPUT)
-- 
GitLab