diff --git a/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h b/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h index abaabd28f7d71d88057235a130f41f5e19101de0..312caa5f3af9c6f326ad0aa0435fd0c8a984d4c3 100644 --- a/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h +++ b/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h @@ -95,8 +95,9 @@ public: /** 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)*/ - bool WorldToSatPosition(const Point3DType & inGeoPoint, Point3DType & satelitePosition) 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; static bool ImageLineToDeburstLine(const std::vector<std::pair<unsigned long,unsigned long> >& lines, unsigned long imageLine, unsigned long & deburstLine); diff --git a/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx b/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx index 324a1855652c443adcc8f087ca78b3019cee3362..e3b594a8fb75bd0252f95c5598f67b7a3c0beb5a 100644 --- a/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx +++ b/Modules/Adapters/OSSIMAdapters/src/otbSarSensorModelAdapter.cxx @@ -189,7 +189,9 @@ bool SarSensorModelAdapter::WorldToCartesian(const Point3DType & inGeoPoint, Poi } -bool SarSensorModelAdapter::WorldToSatPosition(const Point3DType & inGeoPoint, Point3DType & satelitePosition) const + bool SarSensorModelAdapter::WorldToSatPositionAndVelocity(const Point3DType & inGeoPoint, + Point3DType & satelitePosition, + Point3DType & sateliteVelocity) const { if(m_SensorModel.get() == ITK_NULLPTR) { @@ -216,6 +218,10 @@ bool SarSensorModelAdapter::WorldToSatPosition(const Point3DType & inGeoPoint, P satelitePosition[1] = sensorPos.y(); satelitePosition[2] = sensorPos.z(); + sateliteVelocity[0] = sensorVel.x(); + sateliteVelocity[1] = sensorVel.y(); + sateliteVelocity[2] = sensorVel.z(); + return true; } diff --git a/Modules/Adapters/OSSIMAdapters/test/otbSarSensorModelAdapterTest.cxx b/Modules/Adapters/OSSIMAdapters/test/otbSarSensorModelAdapterTest.cxx index 828ed4f747a503d9044ff46945c5693fecc720ef..d48f10066193796158002b55aba127b464814ccc 100644 --- a/Modules/Adapters/OSSIMAdapters/test/otbSarSensorModelAdapterTest.cxx +++ b/Modules/Adapters/OSSIMAdapters/test/otbSarSensorModelAdapterTest.cxx @@ -62,7 +62,7 @@ int otbSarSensorModelAdapterTest(int itkNotUsed(argc), char* argv[]) otb::SarSensorModelAdapter::Point2DType out1,out2; - otb::SarSensorModelAdapter::Point3DType in; + otb::SarSensorModelAdapter::Point3DType in, out3, out4, out5; // GCP 99 from input geom file //support_data.geom.gcp[99].world_pt.hgt: 2.238244926818182e+02 @@ -75,6 +75,10 @@ int otbSarSensorModelAdapterTest(int itkNotUsed(argc), char* argv[]) sensorModel->WorldToLineSample(in,out1); sensorModel->WorldToLineSampleYZ(in,out1,out2); + + sensorModel->WorldToCartesian(in, out5); + sensorModel->WorldToSatPositionAndVelocity(in,out3, out4); + return EXIT_SUCCESS; }