From 5c9dce34f3ef2749cccc8ea13e4acddea8db55c5 Mon Sep 17 00:00:00 2001
From: Chia Aik Song <crscas@nus.edu.sg>
Date: Thu, 10 Dec 2009 15:41:36 +0800
Subject: [PATCH] Modify determination of distance in InitRefPoint. Also 1st
 successful test (i.e. without crashing) of pixel->latlon conversion using
 AlosPalsarModel.

---
 .../otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp  |  2 ++
 .../ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp    |  2 +-
 .../ossim/AlosPalsar/AlosSarSignalData.cpp            |  2 ++
 .../otbossimplugins/ossim/ossimAlosPalsarModel.cpp    | 11 +++++++----
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
index 58ad3a6544..f3df75d833 100644
--- a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
@@ -164,6 +164,7 @@ bool AlosSarData::saveState(ossimKeywordlist& kwl,
   if (datafiledesc != NULL)
   {
     kwl.add(prefix, "pulse_repetition_frequency", signalData->get_pulse_repetition_frequency(),true);
+    // slant range to 1st data sample in metres
     kwl.add(prefix, "slant_range_to_1st_data_sample", signalData->get_slant_range_to_1st_data_sample(),true);
     // FIXME debug
     std::cout << std::endl << "pulse_repetition_frequency = " << signalData->get_pulse_repetition_frequency() << std::endl;
@@ -186,6 +187,7 @@ const AlosSarDataFileDescriptor * AlosSarData::get_AlosSarDataFileDescriptor() c
 
 const AlosSarSignalData * AlosSarData::get_AlosSarSignalData() const
 {
+  // TODO: Check if _records[AlosSarSignalDataID] works
   return dynamic_cast<const AlosSarSignalData*>(_records.find(AlosSarSignalDataID)->second);
 }
 
diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
index e6242d7003..c313dc17c9 100644
--- a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
@@ -27,7 +27,7 @@ AlosSarDataFileDescriptor::~AlosSarDataFileDescriptor()
 std::ostream& operator<<(std::ostream& os, const AlosSarDataFileDescriptor& data)
 {
   os<<"_num_lines:"<<data._num_lines<<std::endl;
-  os<<"_num_lines:"<<data._num_lines<<std::endl;
+  os<<"_num_pix_in_line:"<<data._num_pix_in_line<<std::endl;
   return os;
 }
 
diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarSignalData.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarSignalData.cpp
index 2b7b566602..ceb6d096f1 100644
--- a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarSignalData.cpp
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarSignalData.cpp
@@ -28,6 +28,8 @@ AlosSarSignalData::~AlosSarSignalData()
 
 std::ostream& operator<<(std::ostream& os, const AlosSarSignalData& data)
 {
+  os << "_pulse_repetition_frequency:"
+     << data._pulse_repetition_frequency << std::endl;
   os << "_slant_range_to_1st_data_sample:"
      << data._slant_range_to_1st_data_sample << std::endl;
 
diff --git a/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp b/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp
index f78f779787..52c5cad7e7 100644
--- a/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp
+++ b/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp
@@ -480,8 +480,9 @@ bool ossimAlosPalsarModel::InitRefPoint(const ossimKeywordlist &kwl, const char
 
   const char* inp_sctim_str = kwl.find(prefix,"inp_sctim");
 
-  const char* rng_gate_str = kwl.find(prefix,"zero_dop_range_time_f_pixel");
-  double rng_gate = atof(rng_gate_str);
+  // Not available for ALOS
+  //const char* rng_gate_str = kwl.find(prefix,"zero_dop_range_time_f_pixel");
+  //double rng_gate = atof(rng_gate_str);
 
   if(_refPoint == NULL)
   {
@@ -566,12 +567,14 @@ bool ossimAlosPalsarModel::InitRefPoint(const ossimKeywordlist &kwl, const char
 
   double c = 2.99792458e+8;
 
-  double distance = (rng_gate*1e-3 + ((double)sc_pix)*_sensor->get_nRangeLook()/_sensor->get_sf()) * (c/2.0);
+  //double distance = (rng_gate*1e-3 + ((double)sc_pix)*_sensor->get_nRangeLook()/_sensor->get_sf()) * (c/2.0);
+  const char* slantRange = kwl.find(prefix, "slant_range_to_1st_data_sample");
+  double distance = atof(slantRange);
 
   _refPoint->set_distance(distance);
 
   // in order to use ossimSensorModel::lineSampleToWorld
-  const char* nbCol_str = kwl.find(prefix,"num_pix");
+  const char* nbCol_str = kwl.find(prefix,"num_pix_in_line");
   const char* nbLin_str = kwl.find(prefix,"num_lines");
   theImageSize.x      = atoi(nbCol_str);
   theImageSize.y      = atoi(nbLin_str);
-- 
GitLab