Skip to content
Snippets Groups Projects
Commit e5f270a2 authored by Emmanuel Christophe's avatar Emmanuel Christophe
Browse files

ENH: remove ossim from ikonos metadata

parent fc15e797
Branches
Tags
No related merge requests found
......@@ -18,10 +18,10 @@
#include "otbIkonosImageMetadataInterface.h"
#include <boost/algorithm/string.hpp>
#include "otbMacro.h"
#include "itkMetaDataObject.h"
#include "otbImageKeywordlist.h"
#include "base/ossimKeywordlist.h"
namespace otb
{
......@@ -56,13 +56,18 @@ IkonosImageMetadataInterface::GetSolarIrradiance() const
}
VariableLengthVectorType outputValuesVariableLengthVector;
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
outputValuesVariableLengthVector.SetSize(1);
// values from geoeye
std::string key = "support_data.band_name";
ossimString keywordString = kwl.find(key.c_str());
if (!imageKeywordlist.HasKey("support_data.band_name"))
{
outputValuesVariableLengthVector[0] = -1;
return outputValuesVariableLengthVector;
}
std::string keywordString = imageKeywordlist.GetMetadataByKey("support_data.band_name");
// values from geoeye
// TODO are these the correct values ????
if (keywordString == "Pan")
{
outputValuesVariableLengthVector[0] = 1375.8;
......@@ -102,25 +107,20 @@ IkonosImageMetadataInterface::GetDay() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.acquisition_date"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.acquisition_date";
separatorList = "-";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.acquisition_date");
std::vector<std::string> outputValues;
if (keywordStrings.size() <= 2) itkExceptionMacro(<< "Invalid Day");
boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
// YYYY/MM/DD
ossimString day = keywordStrings[2];
if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Day");
return day.toInt();
int value = atoi(outputValues[2].c_str());
return value;
}
int
......@@ -138,28 +138,25 @@ IkonosImageMetadataInterface::GetMonth() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.acquisition_date"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.acquisition_date";
separatorList = "-";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.acquisition_date");
std::vector<std::string> outputValues;
if (keywordStrings.size() <= 2) itkExceptionMacro(<< "Invalid Month");
boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
// YYYY/MM/DD
ossimString month = keywordStrings[1];
if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Month");
return month.toInt();
int value = atoi(outputValues[1].c_str());
return value;
}
int
IkonosImageMetadataInterface::GetHour() const
IkonosImageMetadataInterface::GetYear() const
{
const MetaDataDictionaryType& dict = this->GetMetaDataDictionary();
if (!this->CanRead())
......@@ -173,28 +170,25 @@ IkonosImageMetadataInterface::GetHour() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.acquisition_date"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.acquisition_time";
separatorList = ":";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.acquisition_date");
std::vector<std::string> outputValues;
if (keywordStrings.size() <= 1) itkExceptionMacro(<< "Invalid Hour");
boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
// HH:MM
ossimString hour = keywordStrings[0];
if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Year");
return hour.toInt();
int value = atoi(outputValues[0].c_str());
return value;
}
int
IkonosImageMetadataInterface::GetMinute() const
IkonosImageMetadataInterface::GetHour() const
{
const MetaDataDictionaryType& dict = this->GetMetaDataDictionary();
if (!this->CanRead())
......@@ -208,28 +202,24 @@ IkonosImageMetadataInterface::GetMinute() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.acquisition_time"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.acquisition_time";
separatorList = ":";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.acquisition_time");
std::vector<std::string> outputValues;
if (keywordStrings.size() <= 1) itkExceptionMacro(<< "Invalid Minute");
boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
// HH:MM
ossimString minute = keywordStrings[1];
if (outputValues.size() < 2) itkExceptionMacro(<< "Invalid Hour");
return minute.toInt();
int value = atoi(outputValues[0].c_str());
return value;
}
int
IkonosImageMetadataInterface::GetYear() const
IkonosImageMetadataInterface::GetMinute() const
{
const MetaDataDictionaryType& dict = this->GetMetaDataDictionary();
if (!this->CanRead())
......@@ -243,25 +233,20 @@ IkonosImageMetadataInterface::GetYear() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.acquisition_time"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.acquisition_date";
separatorList = "-";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.acquisition_time");
std::vector<std::string> outputValues;
if (keywordStrings.size() <= 2) itkExceptionMacro("Invalid Year");
boost::split(outputValues, valueString, boost::is_any_of(" T:-"));
// YYYY/MM/DD
ossimString year = keywordStrings[0];
if (outputValues.size() < 2) itkExceptionMacro(<< "Invalid Minute");
return year.toInt();
int value = atoi(outputValues[1].c_str());
return value;
}
int
......@@ -279,25 +264,19 @@ IkonosImageMetadataInterface::GetProductionDay() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.production_date"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.production_date";
separatorList = "/";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
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:-/"));
if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Day");
// MM/DD/YY
ossimString day = keywordStrings[1];
return day.toInt();
int value = atoi(outputValues[1].c_str());
return value;
}
int
......@@ -315,24 +294,19 @@ IkonosImageMetadataInterface::GetProductionMonth() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.production_date"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.production_date";
separatorList = "/";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
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:-/"));
if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Month");
// MM/DD/YY
ossimString month = keywordStrings[0];
return month.toInt();
int value = atoi(outputValues[0].c_str());
return value;
}
int
......@@ -350,27 +324,20 @@ IkonosImageMetadataInterface::GetProductionYear() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.production_date"))
{
return -1;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key;
ossimString separatorList;
key = "support_data.production_date";
separatorList = "/";
ossimString keywordString = kwl.find(key.c_str());
std::vector<ossimString> keywordStrings = keywordString.split(separatorList);
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:-/"));
if (outputValues.size() <= 2) itkExceptionMacro(<< "Invalid Year");
// MM/DD/YY
int year = keywordStrings[2].toInt();
int year = atoi(outputValues[2].c_str());
if (year == 99) year += 1900;
else year += 2000;
return year;
}
......@@ -475,13 +442,14 @@ IkonosImageMetadataInterface::GetSatElevation() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.nominal_collection_elevation_angle"))
{
return 0;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key = "support_data.nominal_collection_elevation_angle";
ossimString keywordString = kwl.find(key.c_str());
return keywordString.toDouble();
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.nominal_collection_elevation_angle");
double value = atof(valueString.c_str());
return value;
}
double
......@@ -499,13 +467,14 @@ IkonosImageMetadataInterface::GetSatAzimuth() const
{
itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
}
if (!imageKeywordlist.HasKey("support_data.nominal_collection_azimuth_angle"))
{
return 0;
}
ossimKeywordlist kwl;
imageKeywordlist.convertToOSSIMKeywordlist(kwl);
std::string key = "support_data.nominal_collection_azimuth_angle";
ossimString keywordString = kwl.find(key.c_str());
return keywordString.toDouble();
std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.nominal_collection_azimuth_angle");
double value = atof(valueString.c_str());
return value;
}
IkonosImageMetadataInterface::VariableLengthVectorType
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment