Projecting line of sight to ground to get geodetic point of intersection

Hi Forum,

I have an instrument whose boresight is oriented 10° off-nadir (due to the satellite attitude). I am interested in finding the geodectic point at which it intersects with the ground using Orekit. I had no luck using the method projectToGround in OneAxisEllipsoid because it requires the Frame in which the line-of-sight vector is defined (which is the satellite frame, but unavailable with me).

Since this is a simple use case, I would prefer and be glad to use Orekit itself (but planning to use Rugged for complex use cases in future). Thanks in advance!

You can use getIntersectionPoint which is defined for OneAxisEllipsoid. You’ll have to create
the line by yourself. Since the line is defined from two points, one of the points may be the satellite itself and the other point will be some arbitrary point along the line of sight (say 1000m away from the satellite in line of sight direction). You can choose the frame you want for the line, the simplest is probably to use the inertial frame in which the spacecraft state is defined.

2 Likes

Thanks a lot @luc. That seems to do the job perfectly.

For anyone who is looking for the solution, the following is what I have done

  1. Create a Line using a point and a direction (Line.fromDirection()). Point is the satellite itself (Vector3D.ZERO), direction is the boresight vector of the instrument.
  2. Get the transform from satellite body to inertial (state.toTransform().getInverse())
  3. Transform the line from satellite body frame to inertial frame (using transformLine)
  4. Get the Geodetic point of intersection using getIntersectionPoint defined for OneAxisEllipsoid.
2 Likes