diff --git a/Code/UtilitiesAdapters/OssimAdapters/otbFormosatImageMetadataInterface.cxx b/Code/UtilitiesAdapters/OssimAdapters/otbFormosatImageMetadataInterface.cxx
index 30aaf9c44a22a1d03ac6b653d37e09a795248cf2..f48281051fbc1cea7c16a7433f245012732c44ea 100644
--- a/Code/UtilitiesAdapters/OssimAdapters/otbFormosatImageMetadataInterface.cxx
+++ b/Code/UtilitiesAdapters/OssimAdapters/otbFormosatImageMetadataInterface.cxx
@@ -18,10 +18,10 @@
 
 #include "otbFormosatImageMetadataInterface.h"
 
+#include <boost/algorithm/string.hpp>
 #include "otbMacro.h"
 #include "itkMetaDataObject.h"
 #include "otbImageKeywordlist.h"
-#include "base/ossimKeywordlist.h"
 
 namespace otb
 {
@@ -55,13 +55,13 @@ FormosatImageMetadataInterface::GetInstrument() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key = "support_data.instrument";
-  ossimString keywordString = kwl.find(key.c_str());
+  if (imageKeywordlist.HasKey("support_data.instrument"))
+    {
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.instrument");
+    return valueString;
+    }
 
-  return keywordString;
+  return "";
 }
 
 unsigned int
@@ -80,13 +80,14 @@ FormosatImageMetadataInterface::GetInstrumentIndex() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key = "support_data.instrument_index";
-  ossimString keywordString = kwl.find(key.c_str());
+  if (imageKeywordlist.HasKey("support_data.instrument_index"))
+    {
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.instrument_index");
+    unsigned int value = atoi(valueString.c_str());
+    return value;
+    }
 
-  return static_cast<unsigned int>(keywordString.toUInt32());
+  return -1; // Invalid value
 }
 
 FormosatImageMetadataInterface::VariableLengthVectorType
@@ -105,23 +106,20 @@ FormosatImageMetadataInterface::GetSolarIrradiance() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  VariableLengthVectorType outputValuesVariableLengthVector;
-  ossimKeywordlist         kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string              key = "support_data.solar_irradiance";
-  ossimString              keywordString = kwl.find(key.c_str());
-  ossimString              separatorList = " ";
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
   std::vector<double>      outputValues;
-  for (unsigned int i = 0; i < keywordStrings.size(); ++i)
+  if (imageKeywordlist.HasKey("support_data.solar_irradiance")) 
     {
-    if (!keywordStrings[i].empty())
+    std::vector<std::string> outputValuesString;
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.solar_irradiance");
+    boost::trim(valueString);
+    boost::split(outputValuesString, valueString, boost::is_any_of(" "));
+    for (unsigned int i = 0; i < outputValuesString.size(); ++i) 
       {
-      outputValues.push_back(keywordStrings[i].toDouble());
+      outputValues.push_back(atof(outputValuesString[i].c_str()));
       }
     }
 
+  VariableLengthVectorType outputValuesVariableLengthVector;
   outputValuesVariableLengthVector.SetSize(outputValues.size());
   outputValuesVariableLengthVector.Fill(0);
   //In the case of SPOT, the bands are in a different order:
@@ -140,7 +138,7 @@ FormosatImageMetadataInterface::GetSolarIrradiance() const
     }
   else
     {
-    itkExceptionMacro("Invalid Physical Gain");
+    itkExceptionMacro("Invalid Solar Irradiance");
     }
 
   return outputValuesVariableLengthVector;
@@ -162,22 +160,20 @@ FormosatImageMetadataInterface::GetDay() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.image_date";
-  separatorList = "-T";
+  if (!imageKeywordlist.HasKey("support_data.image_date")) 
+    {
+    return -1;
+    }
 
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.image_date");
+  std::vector<std::string> outputValues;
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro(<< "Invalid Day");
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString day = keywordStrings[2];
+  if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Day");
 
-  return day.toInt();
+  int value = atoi(outputValues[2].c_str());
+  return value;
 }
 
 int
@@ -196,22 +192,19 @@ FormosatImageMetadataInterface::GetMonth() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.image_date";
-  separatorList = "-T";
-
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  if (!imageKeywordlist.HasKey("support_data.image_date")) 
+    {
+    return -1;
+    }
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro(<< "Invalid Month");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.image_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString month = keywordStrings[1];
+  if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Month");
 
-  return month.toInt();
+  int value = atoi(outputValues[1].c_str());
+  return value;
 }
 
 int
@@ -229,22 +222,20 @@ FormosatImageMetadataInterface::GetYear() const
     {
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.image_date";
-  separatorList = "-T";
 
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  if (!imageKeywordlist.HasKey("support_data.image_date")) 
+    {
+    return -1;
+    }
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro("Invalid Year");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.image_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString year = keywordStrings[0];
+  if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Year");
 
-  return year.toInt();
+  int value = atoi(outputValues[0].c_str());
+  return value;
 }
 
 int
@@ -263,22 +254,19 @@ FormosatImageMetadataInterface::GetHour() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.image_date";
-  separatorList = "-T:";
-
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  if (!imageKeywordlist.HasKey("support_data.image_date")) 
+    {
+    return -1;
+    }
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro("Invalid Hour");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.image_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString hour = keywordStrings[3];
+  if (outputValues.size() < 4) itkExceptionMacro(<< "Invalid Hour");
 
-  return hour.toInt();
+  int value = atoi(outputValues[3].c_str());
+  return value;
 }
 
 int
@@ -297,21 +285,19 @@ FormosatImageMetadataInterface::GetMinute() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.image_date";
-  separatorList = "-T:";
+  if (!imageKeywordlist.HasKey("support_data.image_date")) 
+    {
+    return -1;
+    }
 
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
-  if (keywordStrings.size() <= 2) itkExceptionMacro("Invalid Minute");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.image_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString minute = keywordStrings[4];
+  if (outputValues.size() < 5) itkExceptionMacro(<< "Invalid Minute");
 
-  return minute.toInt();
+  int value = atoi(outputValues[4].c_str());
+  return value;
 }
 
 int
@@ -330,22 +316,19 @@ FormosatImageMetadataInterface::GetProductionDay() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.production_date";
-  separatorList = "-T:";
-
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  if (!imageKeywordlist.HasKey("support_data.production_date")) 
+    {
+    return -1;
+    }
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro(<< "Invalid Day");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.production_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString day = keywordStrings[2];
+  if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Day");
 
-  return day.toInt();
+  int value = atoi(outputValues[2].c_str());
+  return value;
 }
 
 int
@@ -364,22 +347,19 @@ FormosatImageMetadataInterface::GetProductionMonth() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.production_date";
-  separatorList = "-T";
-
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  if (!imageKeywordlist.HasKey("support_data.production_date")) 
+    {
+    return -1;
+    }
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro(<< "Invalid Month");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.production_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString month = keywordStrings[1];
+  if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Month");
 
-  return month.toInt();
+  int value = atoi(outputValues[1].c_str());
+  return value;
 }
 
 int
@@ -398,22 +378,19 @@ FormosatImageMetadataInterface::GetProductionYear() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-
-  std::string key;
-  ossimString separatorList;
-  key = "support_data.production_date";
-  separatorList = "-T";
-
-  ossimString              keywordString = kwl.find(key.c_str());
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
+  if (!imageKeywordlist.HasKey("support_data.production_date")) 
+    {
+    return -1;
+    }
 
-  if (keywordStrings.size() <= 2) itkExceptionMacro("Invalid Year");
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.production_date");
+  std::vector<std::string> outputValues;
+  boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
 
-  ossimString year = keywordStrings[0];
+  if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Year");
 
-  return year.toInt();
+  int value = atoi(outputValues[0].c_str());
+  return value;
 }
 
 FormosatImageMetadataInterface::VariableLengthVectorType
@@ -433,18 +410,16 @@ FormosatImageMetadataInterface
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string              key = "support_data.physical_bias";
-  ossimString              keywordString = kwl.find(key.c_str());
-  ossimString              separatorList = " ";
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
   std::vector<double>      outputValues;
-  for (unsigned int i = 0; i < keywordStrings.size(); ++i)
+  if (imageKeywordlist.HasKey("support_data.physical_bias")) 
     {
-    if (!keywordStrings[i].empty())
+    std::vector<std::string> outputValuesString;
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.physical_bias");
+    boost::trim(valueString);
+    boost::split(outputValuesString, valueString, boost::is_any_of(" "));
+    for (unsigned int i = 0; i < outputValuesString.size(); ++i) 
       {
-      outputValues.push_back(keywordStrings[i].toDouble());
+      outputValues.push_back(atof(outputValuesString[i].c_str()));
       }
     }
 
@@ -468,7 +443,7 @@ FormosatImageMetadataInterface
     }
   else
     {
-    itkExceptionMacro("Invalid Physical Gain");
+    itkExceptionMacro("Invalid Physical Bias");
     }
 
   return outputValuesVariableLengthVector;
@@ -491,18 +466,16 @@ FormosatImageMetadataInterface
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string              key = "support_data.physical_gain";
-  ossimString              keywordString = kwl.find(key.c_str());
-  ossimString              separatorList = " ";
-  std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
   std::vector<double>      outputValues;
-  for (unsigned int i = 0; i < keywordStrings.size(); ++i)
+  if (imageKeywordlist.HasKey("support_data.physical_gain")) 
     {
-    if (!keywordStrings[i].empty())
+    std::vector<std::string> outputValuesString;
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.physical_gain");
+    boost::trim(valueString);
+    boost::split(outputValuesString, valueString, boost::is_any_of(" "));
+    for (unsigned int i = 0; i < outputValuesString.size(); ++i) 
       {
-      outputValues.push_back(keywordStrings[i].toDouble());
+      outputValues.push_back(atof(outputValuesString[i].c_str()));
       }
     }
 
@@ -548,12 +521,14 @@ FormosatImageMetadataInterface::GetSatElevation() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.incident_angle";
-  ossimString keywordString = kwl.find(key.c_str());
+  if (!imageKeywordlist.HasKey("support_data.incident_angle"))
+    {
+    return 0;
+    }
 
-  return (90. - keywordString.toDouble());
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.incident_angle");
+  double value = 90 - atof(valueString.c_str());
+  return value;
 }
 
 double
@@ -572,16 +547,16 @@ FormosatImageMetadataInterface::GetSatAzimuth() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.step_count";
-  ossimString keywordString = kwl.find(key.c_str());
-  int         step = keywordString.toInt();
-
-  key = "support_data.scene_orientation";
-  keywordString = kwl.find(key.c_str());
-  double satAz = keywordString.toDouble();
+  if (!imageKeywordlist.HasKey("support_data.step_count") ||
+      !imageKeywordlist.HasKey("support_data.scene_orientation"))
+    {
+    return 0;
+    }
 
+  std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.step_count");
+  int step = atoi(valueString.c_str());
+  valueString = imageKeywordlist.GetMetadataByKey("support_data.scene_orientation");
+  double satAz = atof(valueString.c_str());
   if ((step - 48) < 0)
     {
     satAz += 90.;
@@ -611,10 +586,7 @@ FormosatImageMetadataInterface
   VariableLengthVectorType wavel(1);
   wavel.Fill(0.);
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.number_bands";
-  int         nbBands = ossimString(kwl.find(key.c_str())).toInt();
+  int         nbBands = this->GetNumberOfBands();
   std::string sensorId = this->GetSensorID();
 
   // Panchromatic case
@@ -659,10 +631,7 @@ FormosatImageMetadataInterface
   VariableLengthVectorType wavel(1);
   wavel.Fill(0.);
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.number_bands";
-  int         nbBands = ossimString(kwl.find(key.c_str())).toInt();
+  int nbBands = this->GetNumberOfBands();
   std::string sensorId = this->GetSensorID();
 
   // Panchromatic case
@@ -727,10 +696,7 @@ FormosatImageMetadataInterface
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.number_bands";
-  int         nbBands = ossimString(kwl.find(key.c_str())).toInt();
+  int nbBands = this->GetNumberOfBands();
   std::string sensorId = this->GetSensorID();
 
   // Panchromatic case
diff --git a/Code/UtilitiesAdapters/OssimAdapters/otbIkonosImageMetadataInterface.cxx b/Code/UtilitiesAdapters/OssimAdapters/otbIkonosImageMetadataInterface.cxx
index e6f9b51873b1f7855bd071268a2f8f2e32430dab..bacdca784b7c1d1dd78ef22802bc5874713192a8 100644
--- a/Code/UtilitiesAdapters/OssimAdapters/otbIkonosImageMetadataInterface.cxx
+++ b/Code/UtilitiesAdapters/OssimAdapters/otbIkonosImageMetadataInterface.cxx
@@ -528,10 +528,7 @@ IkonosImageMetadataInterface
   VariableLengthVectorType wavel(1);
   wavel.Fill(0.);
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.number_bands";
-  int         nbBands = ossimString(kwl.find(key.c_str())).toInt();
+  int nbBands = this->GetNumberOfBands();
 
   // Panchromatic case
   if (nbBands == 1)
@@ -572,10 +569,7 @@ IkonosImageMetadataInterface
   VariableLengthVectorType wavel(1);
   wavel.Fill(0.);
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.number_bands";
-  int         nbBands = ossimString(kwl.find(key.c_str())).toInt();
+  int nbBands = this->GetNumberOfBands();
 
   // Panchromatic case
   if (nbBands == 1)
diff --git a/Code/UtilitiesAdapters/OssimAdapters/otbOpticalImageMetadataInterface.cxx b/Code/UtilitiesAdapters/OssimAdapters/otbOpticalImageMetadataInterface.cxx
index 3a6f7d232ade8515575955100f386565a00a0984..4c59076a3ea1543494d2e9ff242fee213f97d7b8 100644
--- a/Code/UtilitiesAdapters/OssimAdapters/otbOpticalImageMetadataInterface.cxx
+++ b/Code/UtilitiesAdapters/OssimAdapters/otbOpticalImageMetadataInterface.cxx
@@ -21,7 +21,6 @@
 #include "otbMacro.h"
 #include "itkMetaDataObject.h"
 #include "otbImageKeywordlist.h"
-#include "base/ossimKeywordlist.h"
 
 namespace otb
 {
@@ -42,12 +41,14 @@ OpticalImageMetadataInterface::GetSunElevation() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.elevation_angle";
-  ossimString keywordString = kwl.find(key.c_str());
+  if (imageKeywordlist.HasKey("support_data.elevation_angle"))
+    {
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.elevation_angle");
+    double value = atof(valueString.c_str());
+    return value;
+    }
 
-  return keywordString.toDouble();
+  return 0;
 }
 
 double
@@ -61,12 +62,14 @@ OpticalImageMetadataInterface::GetSunAzimuth() const
     itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
     }
 
-  ossimKeywordlist kwl;
-  imageKeywordlist.convertToOSSIMKeywordlist(kwl);
-  std::string key = "support_data.azimuth_angle";
-  ossimString keywordString = kwl.find(key.c_str());
+  if (imageKeywordlist.HasKey("support_data.azimuth_angle"))
+    {
+    std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.azimuth_angle");
+    double value = atof(valueString.c_str());
+    return value;
+    }
 
-  return keywordString.toDouble();
+  return 0;
 }