From 266ee2c761234773905d9638870e983b85256d11 Mon Sep 17 00:00:00 2001 From: Cyrille Valladeau <cyrille.valladeau@c-s.fr> Date: Tue, 24 May 2011 11:52:03 +0200 Subject: [PATCH] ENH: Change satAzimuth computation for Formosat --- Code/IO/otbFormosatImageMetadataInterface.cxx | 69 +++++-- .../ossim/ossimFormosatDimapSupportData.cpp | 194 +++++++++++++++--- .../ossim/ossimFormosatDimapSupportData.h | 47 +++-- .../ossim/ossimFormosatModel.cpp | 6 + .../ossim/ossimFormosatModel.h | 2 + 5 files changed, 260 insertions(+), 58 deletions(-) diff --git a/Code/IO/otbFormosatImageMetadataInterface.cxx b/Code/IO/otbFormosatImageMetadataInterface.cxx index 28bd64cb1a..f122e8f489 100644 --- a/Code/IO/otbFormosatImageMetadataInterface.cxx +++ b/Code/IO/otbFormosatImageMetadataInterface.cxx @@ -20,6 +20,7 @@ #include <boost/algorithm/string.hpp> #include "otbMacro.h" +#include "otbMath.h" #include "itkMetaDataObject.h" #include "otbImageKeywordlist.h" @@ -547,23 +548,67 @@ FormosatImageMetadataInterface::GetSatAzimuth() const itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist); } - if (!imageKeywordlist.HasKey("support_data.step_count") || - !imageKeywordlist.HasKey("support_data.scene_orientation")) + if (!imageKeywordlist.HasKey("support_data.incident_angle")) { return 0; } - std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.step_count"); - int step = atoi(valueString.c_str()); - valueString = imageKeywordlist.GetMetadataByKey("support_data.scene_orientation"); + std::string valueString = imageKeywordlist.GetMetadataByKey("support_data.sat_azimuth_angle"); double satAz = atof(valueString.c_str()); - if ((step - 48) < 0) - { - satAz += 90.; - } - else satAz = satAz - 90.; - - return satAz; + + // In some software version, a bug exists. + // We have to check the version t correct the satellite azimuth angle contained in the metadata + std::string softVersion = imageKeywordlist.GetMetadataByKey("support_data.software_version"); + + if( (softVersion == "R2P_02.03.P1") || (softVersion == "R2P_02.02") || (softVersion == "R2P_02.03") ) + { + if (!imageKeywordlist.HasKey("support_data.viewing_angle_across_track")) + { + return 0; + } + if (!imageKeywordlist.HasKey("support_data.viewing_angle_along_track")) + { + return 0; + } + if (!imageKeywordlist.HasKey("support_data.scene_orientation")) + { + return 0; + } + + valueString = imageKeywordlist.GetMetadataByKey("support_data.viewing_angle_across_track"); + double viewingAngleAcrossTrack( atof(valueString.c_str()) ); + valueString = imageKeywordlist.GetMetadataByKey("support_data.viewing_angle_along_track"); + double viewingAngleAlongTrack( atof(valueString.c_str()) ); + valueString = imageKeywordlist.GetMetadataByKey("support_data.scene_orientation"); + double sceneOrientation( atof(valueString.c_str()) ); + + double alpha = vcl_atan( vcl_tan( viewingAngleAcrossTrack * CONST_PI_180 ) / vcl_tan( viewingAngleAlongTrack * CONST_PI_180 ) ) * CONST_180_PI; + + if( viewingAngleAlongTrack < 0 ) + { + if (alpha >0) + { + alpha = alpha - 180; + } + else + { + alpha = alpha + 180; + } + } + + alpha -= sceneOrientation; + if (alpha >0) + { + satAz += 180; + } + else + { + satAz = 180 - satAz; + } + + } + + return satAz; } FormosatImageMetadataInterface::VariableLengthVectorType diff --git a/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.cpp b/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.cpp index 8a64b5b36c..1cda1139ef 100644 --- a/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.cpp +++ b/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.cpp @@ -37,12 +37,16 @@ ossimFormosatDimapSupportData::ossimFormosatDimapSupportData () theImageID(), theMetadataFile(), theProductionDate(), + theSoftwareVersion(), theInstrument(), - theInstrumentIndex(0), + theInstrumentIndex(0), theSunAzimuth(0.0), theSunElevation(0.0), + theSatAzimuth(0.0), theIncidenceAngle(0.0), theViewingAngle(0.0), + theViewingAngleAlongTrack(0.0), + theViewingAngleAcrossTrack(0.0), theSceneOrientation(0.0), theImageSize(0.0, 0.0), theRefGroundPoint(0.0, 0.0, 0.0), @@ -73,12 +77,16 @@ ossimFormosatDimapSupportData::ossimFormosatDimapSupportData(const ossimFormosat theImageID(rhs.theImageID), theMetadataFile (rhs.theMetadataFile), theProductionDate(rhs.theProductionDate), + theSoftwareVersion(rhs.theSoftwareVersion), theInstrument(rhs.theInstrument), theInstrumentIndex(rhs.theInstrumentIndex), theSunAzimuth(rhs.theSunAzimuth), - theSunElevation(rhs.theSunElevation), + theSunElevation(rhs.theSunElevation), + theSatAzimuth(rhs.theSatAzimuth), theIncidenceAngle(rhs.theIncidenceAngle), theViewingAngle(rhs.theViewingAngle), + theViewingAngleAlongTrack(rhs.theViewingAngle), + theViewingAngleAcrossTrack(rhs.theViewingAngle), theSceneOrientation(rhs.theSceneOrientation), theImageSize(rhs.theImageSize), theRefGroundPoint(rhs.theRefGroundPoint), @@ -111,12 +119,16 @@ ossimFormosatDimapSupportData::ossimFormosatDimapSupportData (const ossimFilenam theImageID(), theMetadataFile (dimapFile), theProductionDate(), + theSoftwareVersion(), theInstrument(), theInstrumentIndex(0), theSunAzimuth(0.0), theSunElevation(0.0), + theSatAzimuth(0.0), theIncidenceAngle(0.0), theViewingAngle(0.0), + theViewingAngleAlongTrack(0.0), + theViewingAngleAcrossTrack(0.0), theSceneOrientation(0.0), theImageSize(0.0, 0.0), theRefGroundPoint(0.0, 0.0, 0.0), @@ -175,12 +187,16 @@ void ossimFormosatDimapSupportData::clearFields() theImageID = ""; theMetadataFile = ""; theProductionDate = ""; + theSoftwareVersion = ""; theInstrument = ""; theInstrumentIndex = 0; theSunAzimuth = 0.0; theSunElevation = 0.0; + theSatAzimuth = 0.0; theIncidenceAngle = 0.0; theViewingAngle = 0.0; + theViewingAngleAlongTrack = 0.0; + theViewingAngleAcrossTrack = 0.0; theSceneOrientation = 0.0; theImageSize.makeNan(); theRefGroundPoint.makeNan(); @@ -780,24 +796,28 @@ void ossimFormosatDimapSupportData::printInfo(ostream& os) const os << "\n----------------- Info on Formosat Image -------------------" << "\n " - << "\n Job Number (ID): " << theImageID - << "\n Acquisition Date: " << theAcquisitionDate - << "\n Instrument: " << theInstrument - << "\n Instrument Index: " << theInstrumentIndex - << "\n Production Date: " << theProductionDate - << "\n Number of Bands: " << theNumBands - << "\n Geo Center Point: " << theRefGroundPoint - << "\n Image Size: " << theImageSize - << "\n Incidence Angle: " << theIncidenceAngle - << "\n Viewing Angle: " << theViewingAngle - << "\n Scene Orientation: " << theSceneOrientation - << "\n Corrected Attitude: " << corr_att - << "\n Sun Azimuth: " << theSunAzimuth - << "\n Sun Elevation: " << theSunElevation - << "\n Sub image offset: " << theSubImageOffset - << "\n PolynomialLookAngleX size: " << thePolynomialLookAngleX.size() - << "\n thePosEcfSamples size: " << thePosEcfSamples.size() - << "\n theFrameVertexPosImagePoints size : " << theFrameVertexPosImagePoints.size() + << "\n Job Number (ID): " << theImageID + << "\n Acquisition Date: " << theAcquisitionDate + << "\n Instrument: " << theInstrument + << "\n Instrument Index: " << theInstrumentIndex + << "\n Production Date: " << theProductionDate + << "\n Production Softwrae version: " << theSoftwareVersion + << "\n Number of Bands: " << theNumBands + << "\n Geo Center Point: " << theRefGroundPoint + << "\n Image Size: " << theImageSize + << "\n Incidence Angle: " << theIncidenceAngle + << "\n Viewing Angle: " << theViewingAngle + << "\n Viewing Angle Along Track: " << theViewingAngleAlongTrack + << "\n Viewing Angle Across Track: " << theViewingAngleAcrossTrack + << "\n Scene Orientation: " << theSceneOrientation + << "\n Corrected Attitude: " << corr_att + << "\n Sun Azimuth: " << theSunAzimuth + << "\n Sun Elevation: " << theSunElevation + << "\n Sat Azimuth: " << theSatAzimuth + << "\n Sub image offset: " << theSubImageOffset + << "\n PolynomialLookAngleX size: " << thePolynomialLookAngleX.size() + << "\n thePosEcfSamples size: " << thePosEcfSamples.size() + << "\n theFrameVertexPosImagePoints size : " << theFrameVertexPosImagePoints.size() << "\n" << "\n---------------------------------------------------------" << "\n " << std::endl; @@ -831,6 +851,11 @@ ossimString ossimFormosatDimapSupportData::getProductionDate() const return theProductionDate; } +ossimString ossimFormosatDimapSupportData::getSoftwareVersion() const +{ + return theSoftwareVersion; +} + ossimString ossimFormosatDimapSupportData::getImageID() const { return theImageID; @@ -861,6 +886,11 @@ void ossimFormosatDimapSupportData::getSunElevation(ossim_float64& el) const el = theSunElevation; } +void ossimFormosatDimapSupportData::getSatAzimuth(ossim_float64& az) const +{ + az = theSatAzimuth; +} + void ossimFormosatDimapSupportData::getImageSize(ossimDpt& sz) const { sz = theImageSize; @@ -892,6 +922,16 @@ void ossimFormosatDimapSupportData::getViewingAngle(ossim_float64& va) const va = theViewingAngle; } +void ossimFormosatDimapSupportData::getViewingAngleAlongTrack(ossim_float64& va) const +{ + va = theViewingAngleAlongTrack; +} + +void ossimFormosatDimapSupportData::getViewingAngleAcrossTrack(ossim_float64& va) const +{ + va = theViewingAngleAcrossTrack; +} + void ossimFormosatDimapSupportData::getSceneOrientation(ossim_float64& so) const { so = theSceneOrientation; @@ -965,6 +1005,11 @@ bool ossimFormosatDimapSupportData::saveState(ossimKeywordlist& kwl, theSunElevation, true); + kwl.add(prefix, + "sat_azimuth_angle", + theSatAzimuth, + true); + //--- // Note: since this is a new keyword, use the point.toString as there is // no backwards compatibility issues. @@ -1157,6 +1202,11 @@ bool ossimFormosatDimapSupportData::saveState(ossimKeywordlist& kwl, theProductionDate, true); + kwl.add(prefix, + "software_version", + theSoftwareVersion, + true); + kwl.add(prefix, "incident_angle", theIncidenceAngle, @@ -1167,6 +1217,16 @@ bool ossimFormosatDimapSupportData::saveState(ossimKeywordlist& kwl, theViewingAngle, true); + kwl.add(prefix, + "viewing_angle_along_track", + theViewingAngleAlongTrack, + true); + + kwl.add(prefix, + "viewing_angle_across_track", + theViewingAngleAcrossTrack, + true); + kwl.add(prefix, "scene_orientation", theSceneOrientation, @@ -1227,6 +1287,7 @@ bool ossimFormosatDimapSupportData::loadState(const ossimKeywordlist& kwl, theSunAzimuth = ossimString(kwl.find(prefix, ossimKeywordNames::AZIMUTH_ANGLE_KW)).toDouble(); theSunElevation = ossimString(kwl.find(prefix, ossimKeywordNames::ELEVATION_ANGLE_KW)).toDouble(); + theSatAzimuth = ossimString(kwl.find(prefix, "sat_azimuth_angle")).toDouble(); theImageSize = createDpt(kwl.find(prefix, "image_size")); theRefGroundPoint = createGround(kwl.find(prefix, "reference_ground_point")); @@ -1356,13 +1417,16 @@ bool ossimFormosatDimapSupportData::loadState(const ossimKeywordlist& kwl, theNumBands = ossimString(kwl.find(prefix, ossimKeywordNames::NUMBER_BANDS_KW)).toUInt32(); theAcquisitionDate = kwl.find(prefix, ossimKeywordNames::IMAGE_DATE_KW); theProductionDate = kwl.find(prefix, "production_date"); + theSoftwareVersion = kwl.find(prefix, "software_version"); theImageID = kwl.find(prefix, "image_id"); theInstrument = kwl.find(prefix, "instrument"); theInstrumentIndex = ossimString(kwl.find(prefix, "instrument_index")).toUInt32(); - theIncidenceAngle = ossimString(kwl.find(prefix, "incident_angle")).toDouble(); - theViewingAngle = ossimString(kwl.find(prefix, "viewing_angle")).toDouble(); - theSceneOrientation= ossimString(kwl.find(prefix, "scene_orientation")).toDouble(); + theIncidenceAngle = ossimString(kwl.find(prefix, "incident_angle")).toDouble(); + theViewingAngle = ossimString(kwl.find(prefix, "viewing_angle")).toDouble(); + theViewingAngleAlongTrack = ossimString(kwl.find(prefix, "viewing_angle_along_track")).toDouble(); + theViewingAngleAcrossTrack = ossimString(kwl.find(prefix, "viewing_angle_across_track")).toDouble(); + theSceneOrientation = ossimString(kwl.find(prefix, "scene_orientation")).toDouble(); /* TODO add reading FrameVertex point */ @@ -1536,7 +1600,6 @@ bool ossimFormosatDimapSupportData::parsePart1( theSubImageOffset.line = xml_nodes[0]->getText().toDouble() - 1.0; } - //--- // Fetch the RefLineTime: //--- @@ -1577,7 +1640,26 @@ bool ossimFormosatDimapSupportData::parsePart1( return false; } theProductionDate = xml_nodes[0]->getText(); - + + //--- + // Fetch the SoftwareVersion: + //--- + xml_nodes.clear(); + xpath = "/Dimap_Document/Production/Production_Facility/SOFTWARE_VERSION"; + xmlDocument->findNodes(xpath, xml_nodes); + if (xml_nodes.size() == 0) + { + setErrorStatus(); + if(traceDebug()) + { + ossimNotify(ossimNotifyLevel_DEBUG) + << MODULE << " DEBUG:" + << "\nCould not find: " << xpath + << std::endl; + } + return false; + } + theSoftwareVersion = xml_nodes[0]->getText(); //--- // Fetch the Instrument: //--- @@ -1618,7 +1700,6 @@ bool ossimFormosatDimapSupportData::parsePart1( } theInstrumentIndex = xml_nodes[0]->getText().toUInt32(); - return true; } @@ -2342,7 +2423,7 @@ bool ossimFormosatDimapSupportData::initSceneSource( theSensorID = "Formosat 2"; //--- - // Fetch the Sun Azimuth: + // Fetch the Viewing Angle Along Track: //--- xml_nodes.clear(); xpath = "/Dimap_Document/Dataset_Sources/Source_Information/Scene_Source/SUN_AZIMUTH"; @@ -2360,6 +2441,44 @@ bool ossimFormosatDimapSupportData::initSceneSource( } theSunAzimuth = xml_nodes[0]->getText().toDouble(); + //--- + // Fetch the Viewing Angle Across Track: + //--- + xml_nodes.clear(); + xpath = "/Dimap_Document/Dataset_Sources/Source_Information/Scene_Source/VIEWING_ANGLE_ALONG_TRACK"; + xmlDocument->findNodes(xpath, xml_nodes); + if (xml_nodes.size() == 0) + { + setErrorStatus(); + if(traceDebug()) + { + ossimNotify(ossimNotifyLevel_DEBUG) + << "DEBUG:\nCould not find: " << xpath + << std::endl; + } + return false; + } + theViewingAngleAlongTrack = xml_nodes[0]->getText().toDouble(); + + //--- + // Fetch the Sun Azimuth: + //--- + xml_nodes.clear(); + xpath = "/Dimap_Document/Dataset_Sources/Source_Information/Scene_Source/VIEWING_ANGLE_ACROSS_TRACK"; + xmlDocument->findNodes(xpath, xml_nodes); + if (xml_nodes.size() == 0) + { + setErrorStatus(); + if(traceDebug()) + { + ossimNotify(ossimNotifyLevel_DEBUG) + << "DEBUG:\nCould not find: " << xpath + << std::endl; + } + return false; + } + theViewingAngleAcrossTrack = xml_nodes[0]->getText().toDouble(); + //--- // Fetch the Sun Elevation: //--- @@ -2398,6 +2517,25 @@ bool ossimFormosatDimapSupportData::initSceneSource( } theIncidenceAngle = xml_nodes[0]->getText().toDouble(); + //--- + // Fetch incidence angle: + //--- + xml_nodes.clear(); + xpath = "/Dimap_Document/Dataset_Sources/Source_Information/Scene_Source/SATELLITE_AZIMUTH_ANGLE"; + xmlDocument->findNodes(xpath, xml_nodes); + if (xml_nodes.size() == 0) + { + setErrorStatus(); + if(traceDebug()) + { + ossimNotify(ossimNotifyLevel_DEBUG) + << "DEBUG:\nCould not find: " << xpath + << std::endl; + } + return false; + } + theSatAzimuth = xml_nodes[0]->getText().toDouble(); + //--- // Fetch viewing angle: /* @@ -2430,7 +2568,7 @@ bool ossimFormosatDimapSupportData::initSceneSource( double theSatelliteAltitude = xml_nodes[0]->getText().toDouble(); double RT = 63710087714.0; theViewingAngle = asin((RT/(RT+theSatelliteAltitude))*sin(theIncidenceAngle)); - + return true; } diff --git a/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.h b/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.h index dba3c16b53..63c0f2ea9e 100644 --- a/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.h +++ b/Utilities/otbossimplugins/ossim/ossimFormosatDimapSupportData.h @@ -56,24 +56,28 @@ public: void clearFields(); bool loadXmlFile(const ossimFilename& file); - ossimString getSensorID() const; - ossimString getMetadataVersionString() const; - ossimString getAcquisitionDate() const; - ossimString getProductionDate() const; - ossimString getImageID() const; - ossimString getInstrument() const; - ossim_uint32 getInstrumentIndex() const; - ossimFilename getMetadataFile() const; - void getSunAzimuth(ossim_float64& az) const; - void getSunElevation(ossim_float64& el) const; - void getImageSize(ossimDpt& sz) const; - void getLineSamplingPeriod(ossim_float64& pe) const; - void getIncidenceAngle(ossim_float64& ia) const; - void getViewingAngle(ossim_float64& va) const; - void getSceneOrientation(ossim_float64& so) const; - ossim_uint32 getNumberOfBands() const; - bool isStarTrackerUsed() const; - bool isSwirDataUsed() const; + ossimString getSensorID() const; + ossimString getMetadataVersionString() const; + ossimString getAcquisitionDate() const; + ossimString getProductionDate() const; + ossimString getSoftwareVersion() const; + ossimString getImageID() const; + ossimString getInstrument() const; + ossim_uint32 getInstrumentIndex() const; + ossimFilename getMetadataFile() const; + void getSunAzimuth(ossim_float64& az) const; + void getSunElevation(ossim_float64& el) const; + void getSatAzimuth(ossim_float64& az) const; + void getImageSize(ossimDpt& sz) const; + void getLineSamplingPeriod(ossim_float64& pe) const; + void getIncidenceAngle(ossim_float64& ia) const; + void getViewingAngle(ossim_float64& va) const; + void getViewingAngleAlongTrack(ossim_float64& va) const; + void getViewingAngleAcrossTrack(ossim_float64& va) const; + void getSceneOrientation(ossim_float64& so) const; + ossim_uint32 getNumberOfBands() const; + bool isStarTrackerUsed() const; + bool isSwirDataUsed() const; //--- // Image center point: @@ -192,6 +196,7 @@ private: * Initializes: * theSunAzimuth * theSunElevation + * theSatAzimuth; * theIncidenceAngle * @return true on success, false if not found. */ @@ -206,6 +211,8 @@ private: * Initializes: * theRefGroundPoint * theViewingAngle + * theViewingAngleAlongTrack + * theViewingAngleAcrossTrack * * Note that the theRefImagePoint will be the zero based center of the * frame. @@ -218,6 +225,7 @@ private: ossimString theImageID; ossimFilename theMetadataFile; ossimString theProductionDate; + ossimString theSoftwareVersion; ossimString theInstrument; ossim_uint32 theInstrumentIndex; @@ -228,8 +236,11 @@ private: */ ossim_float64 theSunAzimuth; ossim_float64 theSunElevation; + ossim_float64 theSatAzimuth; ossim_float64 theIncidenceAngle; ossim_float64 theViewingAngle; + ossim_float64 theViewingAngleAlongTrack; + ossim_float64 theViewingAngleAcrossTrack; ossim_float64 theSceneOrientation; ossimDpt theImageSize; diff --git a/Utilities/otbossimplugins/ossim/ossimFormosatModel.cpp b/Utilities/otbossimplugins/ossim/ossimFormosatModel.cpp index 47455ba7fa..7ef111f0f8 100644 --- a/Utilities/otbossimplugins/ossim/ossimFormosatModel.cpp +++ b/Utilities/otbossimplugins/ossim/ossimFormosatModel.cpp @@ -74,6 +74,7 @@ ossimplugins::ossimFormosatModel::ossimFormosatModel() theMetaDataFile ("NOT ASSIGNED"), theIllumAzimuth (0.0), theIllumElevation (0.0), + theSatAzimuth (0.0), thePositionError (0.0), theRefImagingTime (0.0), theRefImagingTimeLine (0.0), @@ -98,6 +99,7 @@ ossimplugins::ossimFormosatModel::ossimFormosatModel(ossimFormosatDimapSupportDa theMetaDataFile ("NOT ASSIGNED"), theIllumAzimuth (0.0), theIllumElevation (0.0), + theSatAzimuth (0.0), thePositionError (0.0), theRefImagingTime (0.0), theRefImagingTimeLine (0.0), @@ -378,6 +380,8 @@ void ossimplugins::ossimFormosatModel::loadSupportData() theSupportData->getSunAzimuth(theIllumAzimuth); theSupportData->getSunElevation(theIllumElevation); + theSupportData->getSatAzimuth(theSatAzimuth); + ossimDpt sz; theSupportData->getImageSize(sz); theImageSize = sz; @@ -461,6 +465,7 @@ std::ostream& ossimplugins::ossimFormosatModel::print(std::ostream& out) const << "\n theMetadataFile = " << theMetaDataFile << "\n theIllumAzimuth = " << theIllumAzimuth << "\n theIllumElevation = " << theIllumElevation + << "\n theSatAzimuth = " << theSatAzimuth << "\n thePositionError = " << thePositionError << "\n theImageSize = " << theImageSize << "\n theRefGndPt = " << theRefGndPt @@ -759,6 +764,7 @@ ossimplugins::ossimFormosatModel::initFromMetadata(ossimFormosatDimapSupportData theMetaDataFile = "NOT ASSIGNED"; theIllumAzimuth = 0.0; theIllumElevation = 0.0; + theSatAzimuth = 0.0; thePositionError = 0.0; theRefImagingTime = 0.0; theLineSamplingPeriod = 0.0; diff --git a/Utilities/otbossimplugins/ossim/ossimFormosatModel.h b/Utilities/otbossimplugins/ossim/ossimFormosatModel.h index fade82102f..0187ad8502 100644 --- a/Utilities/otbossimplugins/ossim/ossimFormosatModel.h +++ b/Utilities/otbossimplugins/ossim/ossimFormosatModel.h @@ -136,6 +136,7 @@ protected: ossimFilename theMetaDataFile; ossim_float64 theIllumAzimuth; ossim_float64 theIllumElevation; + ossim_float64 theSatAzimuth; ossim_float64 thePositionError; ossim_float64 theRefImagingTime; @@ -158,6 +159,7 @@ protected: ossim_float64 theYawRate; // degrees/sec ossim_float64 theFocalLenOffset; // percent deviation from nominal + TYPE_DATA }; } -- GitLab