From 4408f639d5d33190982afd147d7012dcecbecdf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABlle=20USSEGLIO?= <gaelle.usseglio@cnes.fr> Date: Mon, 5 Feb 2018 16:03:26 +0000 Subject: [PATCH] ENH : Return velocity vector in WorldToSatPositionAndVelocity of ossimSensorAdapter and add test --- .../OSSIMAdapters/include/otbSarSensorModelAdapter.h | 5 +++-- .../OSSIMAdapters/src/otbSarSensorModelAdapter.cxx | 8 +++++++- .../OSSIMAdapters/test/otbSarSensorModelAdapterTest.cxx | 6 +++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h b/Modules/Adapters/OSSIMAdapters/include/otbSarSensorModelAdapter.h index abaabd28f7..312caa5f3a 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 324a185565..e3b594a8fb 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 828ed4f747..d48f100661 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; } -- GitLab