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

MRG

parents 093536bb 81444f66
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,7 @@ namespace ossimplugins
{
const int AlosPalsarLeader::AlosPalsarFacilityDataID = 17;
const int AlosPalsarLeader::AlosPalsarRadiometricDataID = 5;
const int AlosPalsarLeader::AlosPalsarPlatformPositionDataID = 3;
// const int AlosPalsarLeader::AlosPalsarMapProjectionDataID = 3; //
const int AlosPalsarLeader::AlosPalsarDataSetSummaryID = 2;
......@@ -242,9 +243,21 @@ bool AlosPalsarLeader::saveState(ossimKeywordlist& kwl,
{
result = false;
}
const AlosPalsarRadiometricData *radiometricdata = get_AlosPalsarRadiometricData();
if ((radiometricdata != NULL) && (result == true))
{
kwl.add(prefix, "calibration_factor", radiometricdata->get_calibration_factor(), true);
}
else
{
result = false;
}
// FIXME Do not handle Palsar facility-related data for now...
// The current code corresponds to the ERS facility-related data
// which is completely different from that for PALSAR
/*
* Adding metadata necessary to the sensor model in the keywordlist
*/
const AlosPalsarFacilityData *facilitydata = get_AlosPalsarFacilityData();
if ((facilitydata != NULL) && (result == true))
{
......@@ -257,7 +270,7 @@ bool AlosPalsarLeader::saveState(ossimKeywordlist& kwl,
{
result = false;
}
*/
if (traceDebug())
{
......@@ -277,30 +290,33 @@ const AlosPalsarFacilityData * AlosPalsarLeader::get_AlosPalsarFacilityData() co
// return dynamic_cast<const AlosPalsarFacilityData*>(it.find(AlosPalsarFacilityDataID));
return dynamic_cast<const AlosPalsarFacilityData*>(_records.find(AlosPalsarFacilityDataID)->second);
}
const AlosPalsarRadiometricData * AlosPalsarLeader::get_AlosPalsarRadiometricData() const
{
return dynamic_cast<const AlosPalsarRadiometricData*>(_records.find(AlosPalsarRadiometricDataID)->second);
}
const AlosPalsarPlatformPositionData * AlosPalsarLeader::get_AlosPalsarPlatformPositionData() const
{
// return (AlosPalsarPlatformPositionData*)_records[AlosPalsarPlatformPositionDataID];
return dynamic_cast<const AlosPalsarPlatformPositionData*>(_records.find(AlosPalsarPlatformPositionDataID)->second);
}
/*const AlosPalsarMapProjectionData * AlosPalsarLeader::get_AlosPalsarMapProjectionData() const
/*
const AlosPalsarMapProjectionData * AlosPalsarLeader::get_AlosPalsarMapProjectionData() const
{
// return (AlosPalsarMapProjectionData*)_records[AlosPalsarMapProjectionDataID];
return dynamic_cast<const AlosPalsarMapProjectionData*>(_records.find(AlosPalsarMapProjectionDataID)->second);
}
*/
//no map projection data
// no map projection data for level 1.1
const AlosPalsarDataSetSummary * AlosPalsarLeader::get_AlosPalsarDataSetSummary() const
{
// return (AlosPalsarDataSetSummary*)_records[AlosPalsarDataSetSummaryID];
return dynamic_cast<const AlosPalsarDataSetSummary*>(_records.find(AlosPalsarDataSetSummaryID)->second);
}
const AlosPalsarFileDescriptor * AlosPalsarLeader::get_AlosPalsarFileDescriptor() const
{
// return (AlosPalsarFileDescriptor*)_records[AlosPalsarFileDescriptorID];
return dynamic_cast<const AlosPalsarFileDescriptor*>(_records.find(AlosPalsarFileDescriptorID)->second);
}
......
......@@ -18,6 +18,7 @@
#include "AlosPalsar/AlosPalsarDataSetSummary.h"
#include "AlosPalsar/AlosPalsarMapProjectionData.h"
#include "AlosPalsar/AlosPalsarPlatformPositionData.h"
#include "AlosPalsar/AlosPalsarRadiometricData.h"
#include "AlosPalsar/AlosPalsarFacilityData.h"
#include <map>
......@@ -31,6 +32,7 @@ class AlosPalsarMapProjectionData;
class AlosPalsarDataSetSummary;
class AlosPalsarFileDescriptor;
class AlosPalsarFacilityData;
class AlosPalsarRadiometricData;
/**
* @ingroup AlosPalsarLeaderFile
......@@ -86,6 +88,7 @@ public:
const AlosPalsarFacilityData * get_AlosPalsarFacilityData() const;
const AlosPalsarRadiometricData * get_AlosPalsarRadiometricData() const;
const AlosPalsarPlatformPositionData * get_AlosPalsarPlatformPositionData() const;
// const AlosPalsarMapProjectionData * get_AlosPalsarMapProjectionData() const;
const AlosPalsarDataSetSummary * get_AlosPalsarDataSetSummary() const;
......@@ -96,6 +99,7 @@ protected:
RecordType _records;
static const int AlosPalsarFacilityDataID;
static const int AlosPalsarRadiometricDataID;
static const int AlosPalsarPlatformPositionDataID;
// static const int AlosPalsarMapProjectionDataID;
static const int AlosPalsarDataSetSummaryID;
......
......@@ -15,6 +15,7 @@
#include <AlosPalsar/AlosPalsarDataSetSummary.h>
#include <AlosPalsar/AlosPalsarFileDescriptor.h>
#include <AlosPalsar/AlosPalsarPlatformPositionData.h>
#include <AlosPalsar/AlosPalsarRadiometricData.h>
#include <AlosPalsar/AlosPalsarFacilityData.h>
namespace ossimplugins
......@@ -23,6 +24,7 @@ namespace ossimplugins
AlosPalsarLeaderFactory::AlosPalsarLeaderFactory()
{
RegisterRecord(17, new AlosPalsarFacilityData());
RegisterRecord(5, new AlosPalsarRadiometricData());
RegisterRecord(3, new AlosPalsarPlatformPositionData());
// RegisterRecord(3, new AlosPalsarMapProjectionData());//
RegisterRecord(2, new AlosPalsarDataSetSummary());
......
......@@ -152,8 +152,9 @@ std::istream& operator>>(std::istream& is, AlosPalsarPlatformPositionData& data)
is >> data._pos_vect[i];
}
is.seekg(598, std::ios::cur); //skip the rest part of PlatformPostion//
is.seekg(12495744, std::ios::cur); //data skip ubtil facility11//
is.seekg(598, std::ios::cur); //skip the rest of the platform position data record
is.seekg(8192, std::ios::cur); //skip to the radiometric data record
//is.seekg(12495744, std::ios::cur); //skip to the 11th facility-related data record
return is;
}
......
......@@ -14,6 +14,7 @@
#define AlosPalsarPlatformPositionData_h
#include <iostream>
#include <cstdlib>
#include <AlosPalsar/AlosPalsarRecord.h>
#include <AlosPalsar/AlosPalsarRecordHeader.h>
......
//----------------------------------------------------------------------------
//
// "Copyright Centre National d'Etudes Spatiales"
// "Copyright Centre for Remote Imaging, Sensing and Processing"
//
// License: LGPL
//
// See LICENSE.txt file in the top level directory for more details.
//
//----------------------------------------------------------------------------
// $Id$
#include <AlosPalsar/AlosPalsarRadiometricData.h>
namespace ossimplugins
{
AlosPalsarRadiometricData::AlosPalsarRadiometricData() : AlosPalsarRecord("radio_data_rec")
{
}
AlosPalsarRadiometricData::~AlosPalsarRadiometricData()
{
}
std::ostream& operator<<(std::ostream& os, const AlosPalsarRadiometricData& data)
{
os << "calibration_factor:" << data._calibration_factor << std::endl;
return os;
}
std::istream& operator>>(std::istream& is, AlosPalsarRadiometricData& data)
{
char buf[9];
is.seekg(8, std::ios::cur);
is.read(buf, 8);
buf[8] = '\0';
data._calibration_factor = atof(buf);
is.seekg(9824, std::ios::cur); //skip the rest of the radiometric data record
is.seekg(12477692, std::ios::cur); //skip to the 11th facility-related data record
return is;
}
AlosPalsarRadiometricData::AlosPalsarRadiometricData(const AlosPalsarRadiometricData& rhs):
AlosPalsarRecord(rhs)
{
_calibration_factor = rhs._calibration_factor;
}
AlosPalsarRadiometricData& AlosPalsarRadiometricData::operator=(const AlosPalsarRadiometricData& rhs)
{
_calibration_factor = rhs._calibration_factor;
return *this;
}
}
//----------------------------------------------------------------------------
//
// "Copyright Centre National d'Etudes Spatiales"
// "Copyright Centre for Remote Imaging, Sensing and Processing"
//
// License: LGPL
//
// See LICENSE.txt file in the top level directory for more details.
//
//----------------------------------------------------------------------------
// $Id$
#ifndef AlosPalsarRadiometricData_h
#define AlosPalsarRadiometricData_h
#include <iostream>
#include <cstdlib>
#include <AlosPalsar/AlosPalsarRecord.h>
#include <AlosPalsar/AlosPalsarRecordHeader.h>
namespace ossimplugins
{
/**
* @ingroup RadiometricDataRecord
* @brief This class is able to read a radiometric data record
*/
class AlosPalsarRadiometricData : public AlosPalsarRecord
{
public:
/**
* @brief Constructor
*/
AlosPalsarRadiometricData();
/**
* @brief Destructor
*/
virtual ~AlosPalsarRadiometricData();
/**
* @brief Copy constructor
*/
AlosPalsarRadiometricData(const AlosPalsarRadiometricData& rhs);
/**
* @brief Copy operator
*/
AlosPalsarRadiometricData& operator=(const AlosPalsarRadiometricData& rhs);
/**
* @brief This function writes the Alos Palsar radiometric data in a stream
*/
friend std::ostream& operator<<(std::ostream& os, const AlosPalsarRadiometricData& data);
/**
* @brief This function reads Alos Palsar radiometric data from a stream
*/
friend std::istream& operator>>(std::istream& is, AlosPalsarRadiometricData& data);
/**
* @brief This function is able to create a new instance of the class
*/
AlosPalsarRecord* Instanciate()
{
return new AlosPalsarRadiometricData();
};
/**
* @brief This function is able to create a new instance of the class initialised with the data of the calling instance
*/
AlosPalsarRecord* Clone()
{
return new AlosPalsarRadiometricData(*this);
};
/**
* @brief Read the class data from a stream
*/
void Read(std::istream& is)
{
is >> *this;
};
/**
* @brief Write the class to a stream
*/
void Write(std::ostream& os)
{
os << *this;
};
/**
* @brief Calibration factor
*/
double get_calibration_factor() const
{
return _calibration_factor;
};
protected:
/**
* @brief Data sampling interval
*/
double _calibration_factor;
private:
};
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment