diff --git a/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h b/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h index 312caa5f3af9c6f326ad0aa0435fd0c8a984d4c3..8a713883b6720d0dd9b8e0ce89c03ae924cd75c9 100644 --- a/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h +++ b/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h @@ -92,13 +92,13 @@ public: (col,row) */ bool WorldToLineSample(const Point3DType & inGEoPOint, Point2DType & cr) const; - /** Transform world point (lat,lon,hgt) to cartesian point (x,y,z) */ - bool WorldToCartesian(const Point3DType & inGeoPoint, Point3DType & outCartesianPoint) const; - /** Transform world point (lat,lon,hgt) to satellite position (x,y,z) and satellite velocity */ bool WorldToSatPositionAndVelocity(const Point3DType & inGeoPoint, Point3DType & satelitePosition, Point3DType & sateliteVelocity) const; + /** Transform world point (lat,lon,hgt) to cartesian point (x,y,z) */ + static bool WorldToCartesian(const Point3DType & inGeoPoint, Point3DType & outCartesianPoint); + static bool ImageLineToDeburstLine(const std::vector<std::pair<unsigned long,unsigned long> >& lines, unsigned long imageLine, unsigned long & deburstLine); static void DeburstLineToImageLine(const std::vector<std::pair<unsigned long,unsigned long> >& lines, unsigned long deburstLine, unsigned long & imageLine); diff --git a/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx b/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx index e3b594a8fb75bd0252f95c5598f67b7a3c0beb5a..56bcfbca01f498b1f8cc020b5c8e839ebf809cbb 100644 --- a/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx +++ b/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx @@ -117,8 +117,8 @@ bool SarSensorModelAdapter::WorldToLineSampleYZ(const Point3DType & inGeoPoint, } ossimGpt inGpt; - inGpt.lat = inGeoPoint[0]; - inGpt.lon = inGeoPoint[1]; + inGpt.lon = inGeoPoint[0]; + inGpt.lat = inGeoPoint[1]; inGpt.hgt = inGeoPoint[2]; ossimDpt outDpt; @@ -145,8 +145,8 @@ bool SarSensorModelAdapter::WorldToLineSample(const Point3DType & inGeoPoint, Po } ossimGpt inGpt; - inGpt.lat = inGeoPoint[0]; - inGpt.lon = inGeoPoint[1]; + inGpt.lon = inGeoPoint[0]; + inGpt.lat = inGeoPoint[1]; inGpt.hgt = inGeoPoint[2]; ossimDpt outDpt; @@ -162,21 +162,14 @@ bool SarSensorModelAdapter::WorldToLineSample(const Point3DType & inGeoPoint, Po return true; } -bool SarSensorModelAdapter::WorldToCartesian(const Point3DType & inGeoPoint, Point3DType & outCartesianPoint) const +bool SarSensorModelAdapter::WorldToCartesian(const Point3DType & inGeoPoint, Point3DType & outCartesianPoint) { - if(m_SensorModel.get() == ITK_NULLPTR) - { - return false; - } - ossimGpt inGpt; - inGpt.lat = inGeoPoint[0]; - inGpt.lon = inGeoPoint[1]; + inGpt.lon = inGeoPoint[0]; + inGpt.lat = inGeoPoint[1]; inGpt.hgt = inGeoPoint[2]; - ossimEcefPoint outCartesien(inGpt); - if(outCartesien.isNan()) return false; @@ -186,12 +179,11 @@ bool SarSensorModelAdapter::WorldToCartesian(const Point3DType & inGeoPoint, Poi outCartesianPoint[2] = outCartesien.z(); return true; - } - - bool SarSensorModelAdapter::WorldToSatPositionAndVelocity(const Point3DType & inGeoPoint, - Point3DType & satelitePosition, - Point3DType & sateliteVelocity) const + +bool SarSensorModelAdapter::WorldToSatPositionAndVelocity(const Point3DType & inGeoPoint, + Point3DType & satelitePosition, + Point3DType & sateliteVelocity) const { if(m_SensorModel.get() == ITK_NULLPTR) { @@ -199,10 +191,9 @@ bool SarSensorModelAdapter::WorldToCartesian(const Point3DType & inGeoPoint, Poi } ossimGpt inGpt; - inGpt.lat = inGeoPoint[0]; - inGpt.lon = inGeoPoint[1]; + inGpt.lon = inGeoPoint[0]; + inGpt.lat = inGeoPoint[1]; inGpt.hgt = inGeoPoint[2]; - ossimplugins::ossimSarSensorModel::TimeType azimuthTime; double rangeTime; @@ -211,7 +202,7 @@ bool SarSensorModelAdapter::WorldToCartesian(const Point3DType & inGeoPoint, Poi const bool success = m_SensorModel->worldToAzimuthRangeTime(inGpt, azimuthTime, rangeTime,sensorPos,sensorVel); - if(sensorPos.isNan()) + if(sensorPos.isNan() || !success) return false; satelitePosition[0] = sensorPos.x();