Skip to content
Snippets Groups Projects
Commit e6aa69a8 authored by Chia Aik Song's avatar Chia Aik Song
Browse files

BUG: Take Doppler centroid into account for the SAR sensor model

parent 1891f46a
No related branches found
No related tags found
No related merge requests found
...@@ -131,6 +131,7 @@ void ossimGeometricSarSensorModel::lineSampleHeightToWorld( ...@@ -131,6 +131,7 @@ void ossimGeometricSarSensorModel::lineSampleHeightToWorld(
} }
JSDDateTime azimuthTime = getTime(line) ; JSDDateTime azimuthTime = getTime(line) ;
int etatLoc = sensor.ImageToWorld(slantRange, azimuthTime, heightEllipsoid, lon, lat); int etatLoc = sensor.ImageToWorld(slantRange, azimuthTime, heightEllipsoid, lon, lat);
if(traceDebug()) if(traceDebug())
......
...@@ -51,8 +51,10 @@ int SarSensor::ImageToWorld(double distance, JSDDateTime time, double height, do ...@@ -51,8 +51,10 @@ int SarSensor::ImageToWorld(double distance, JSDDateTime time, double height, do
RectangularCoordinate cart; RectangularCoordinate cart;
double dopplerCentroid = _params->get_dopcen();
// note : the Doppler frequency is set to zero // note : the Doppler frequency is set to zero
int etatLoc = localisationSAR(*geoEph, lambda, distance, 0.0, sensVisee, semiMajorAxis , semiMinorAxis , height, &cart); int etatLoc = localisationSAR(*geoEph, lambda, distance, dopplerCentroid, sensVisee, semiMajorAxis , semiMinorAxis , height, &cart);
GeodesicCoordinate geo; GeodesicCoordinate geo;
cart.AsGeodesicCoordinates(semiMajorAxis , semiMinorAxis, &geo); cart.AsGeodesicCoordinates(semiMajorAxis , semiMinorAxis, &geo);
......
...@@ -28,6 +28,7 @@ static const char SEMI_MAJOR_AXIS_KW[] = "semi_major_axis"; ...@@ -28,6 +28,7 @@ static const char SEMI_MAJOR_AXIS_KW[] = "semi_major_axis";
static const char SEMI_MINOR_AXIS_KW[] = "semi_minor_axis"; static const char SEMI_MINOR_AXIS_KW[] = "semi_minor_axis";
static const char NUM_AZIMUTH_LOOKS_KW[] = "number_azimuth_looks"; static const char NUM_AZIMUTH_LOOKS_KW[] = "number_azimuth_looks";
static const char NUM_RANGE_LOOKS_KW[] = "number_range_looks"; static const char NUM_RANGE_LOOKS_KW[] = "number_range_looks";
static const char DOPCEN_KW[] = "doppler_centroid";
SensorParams::SensorParams(): SensorParams::SensorParams():
_prf(0.0), _prf(0.0),
...@@ -39,7 +40,8 @@ SensorParams::SensorParams(): ...@@ -39,7 +40,8 @@ SensorParams::SensorParams():
_semiMajorAxis(6378137.0), _semiMajorAxis(6378137.0),
_semiMinorAxis(6356752.3141), _semiMinorAxis(6356752.3141),
_nAzimuthLook(1), _nAzimuthLook(1),
_nRangeLook(1) _nRangeLook(1),
_dopcen(0.0)
{ {
} }
...@@ -57,7 +59,8 @@ SensorParams::SensorParams(const SensorParams& rhs): ...@@ -57,7 +59,8 @@ SensorParams::SensorParams(const SensorParams& rhs):
_semiMajorAxis(rhs._semiMajorAxis), _semiMajorAxis(rhs._semiMajorAxis),
_semiMinorAxis(rhs._semiMinorAxis), _semiMinorAxis(rhs._semiMinorAxis),
_nAzimuthLook(rhs._nAzimuthLook), _nAzimuthLook(rhs._nAzimuthLook),
_nRangeLook(rhs._nRangeLook) _nRangeLook(rhs._nRangeLook),
_dopcen(rhs._dopcen)
{ {
} }
...@@ -75,6 +78,7 @@ SensorParams& SensorParams::operator=(const SensorParams& rhs) ...@@ -75,6 +78,7 @@ SensorParams& SensorParams::operator=(const SensorParams& rhs)
_nRangeLook = rhs._nRangeLook; _nRangeLook = rhs._nRangeLook;
_semiMajorAxis = rhs._semiMajorAxis; _semiMajorAxis = rhs._semiMajorAxis;
_semiMinorAxis = rhs._semiMinorAxis; _semiMinorAxis = rhs._semiMinorAxis;
_dopcen = rhs._dopcen;
return *this; return *this;
} }
...@@ -97,7 +101,7 @@ bool SensorParams::saveState(ossimKeywordlist& kwl, const char* prefix) const ...@@ -97,7 +101,7 @@ bool SensorParams::saveState(ossimKeywordlist& kwl, const char* prefix) const
kwl.add(pfx.c_str(), SEMI_MINOR_AXIS_KW, _semiMinorAxis); kwl.add(pfx.c_str(), SEMI_MINOR_AXIS_KW, _semiMinorAxis);
kwl.add(pfx.c_str(), NUM_AZIMUTH_LOOKS_KW, _nAzimuthLook); kwl.add(pfx.c_str(), NUM_AZIMUTH_LOOKS_KW, _nAzimuthLook);
kwl.add(pfx.c_str(), NUM_RANGE_LOOKS_KW, _nRangeLook); kwl.add(pfx.c_str(), NUM_RANGE_LOOKS_KW, _nRangeLook);
kwl.add(pfx.c_str(), DOPCEN_KW, _dopcen);
return true; return true;
} }
...@@ -232,6 +236,16 @@ bool SensorParams::loadState(const ossimKeywordlist& kwl, const char* prefix) ...@@ -232,6 +236,16 @@ bool SensorParams::loadState(const ossimKeywordlist& kwl, const char* prefix)
result = false; result = false;
} }
lookup = kwl.find(pfx.c_str(), DOPCEN_KW);
if (lookup)
{
s = lookup;
_dopcen = s.toDouble();
}
else
{
result = false;
}
return result; return result;
} }
} }
...@@ -158,6 +158,15 @@ public: ...@@ -158,6 +158,15 @@ public:
_semiMinorAxis = value; _semiMinorAxis = value;
} }
double get_dopcen() const
{
return _dopcen;
}
void set_dopcen(double value)
{
_dopcen = value;
}
/** /**
* @brief Method to save object state to a keyword list. * @brief Method to save object state to a keyword list.
* @param kwl Keyword list to save to. * @param kwl Keyword list to save to.
...@@ -226,6 +235,11 @@ protected: ...@@ -226,6 +235,11 @@ protected:
*/ */
double _nRangeLook ; double _nRangeLook ;
/**
* @brief Doppler centroid
*/
double _dopcen;
private: private:
}; };
} }
......
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