Frame conversion from Topocentric Frame to ITRF

Hi Everyone,

I am a total newbie to Orekit, i know convert ITRF to topocentric Coordinates in Orekit,
but i have Problem to convert Azimut, Elevation, Range and RangeRate to ITRF (Position Velocity).
can anyone help me or show me how to do that in Orekit if it is possible?

Hi @Tux welcome

If you want to have proper velocity, you will also need the first derivatives of azimuth and elevation, range rate would not be sufficient. If you have everything, one way to do it is to use a trick with FieldVector3D<UnivariateDerivative1>. This is just a regular 3D vector (that will here represent the position), but it will embed the first derivatives of each component (hence it will embed the velocity). Here is one way to do it:

  UnivariateDerivative1                rangeWithDerivative     = new UnivariateDerivative1(range,     rangeRate);
  UnivariateDerivative1                azimuthWithDerivative   = new UnivariateDerivative1(azimuth,   azimuthRate);
  UnivariateDerivative1                elevationWithDerivative = new UnivariateDerivative1(elevation, elevationRate);
  FieldVector3D<UnivariateDerivative1> posWithDerivativeTopo   =
                  new FieldVector3D<>(rangeWithDerivative,
                                      new FieldVector3D<>(azimuthWithDerivative.negate().add(MathUtils.SEMI_PI),
  PVCoordinates pvTopo = new PVCoordinates(posWithDerivativeTopo);
  PVCoordinates pvItrf = topo.getTransformTo(itrf, date).transformPVCoordinates(pvTopo);

The need for π/2 - α instead of α (where α is the azimuth) is because azimuth is counted from North to East, i.e. from the Y vector to the X vector of the topocentric frame.