ECI to ECEF transformation

Hi all!

I was performing some tests to get the transformation between ECI and ECEF and I find out a doubt that I hope you will help me to solve.

I defined an instance of the EME2000 inertial reference frame and two different instances of the ECEF reference frames. In particular, the first ECEF is defined using IERS_2010 conventions and ITRF_2014 version, while the second one is defined using IERS_2010 conventions and ITRF_2008 version.

Frame eme2000 = FramesFactory.getEME2000();
Frame ecef2014 = FramesFactory.getITRF(ITRFVersion.ITRF_2014, IERSConventions.IERS_2010, true);
Frame ecef2008 = FramesFactory.getITRF(ITRFVersion.ITRF_2008, IERSConventions.IERS_2010, true);

I defined the following two epochs as dates to get the transformation between the reference frames.

AbsoluteDate epoch1 = new AbsoluteDate(2017, 2, 28, 23, 59, 0.0, TimeScalesFactory.getUTC());
AbsoluteDate epoch2 = new AbsoluteDate(2017, 3, 1, 0, 0, 0.0, TimeScalesFactory.getUTC());

I checked that for “epoch1” the transformation has no translation vector considering ITRF_2008 version, while for “epoch2” the transformation has no translation vector considering ITRF_2014.
I know that the ITRF versions are associated to different realizations of the ITRS and I am assuming that this can imply the presence of roto-translations from one version to the other one. I can also think that “epoch2” may be a sort of cut-off epoch to move from ITRF_2008 to ITRF_2014 used as reference ECEF frame (am I right?).

However, the instance of the EME2000 frame is always the same. Therefore, my question is if also the origin of the inertial frames (EME2000, GCRF) is changed according to the epoch. Otherwise, it is not possible that the same instance of the inertial frame shares the origin with two different ITRF versions that do not share the same origin.

I thank you all in advance for any help.

Regards,
Marco

No, these inertial frames are considered fixed with respect to some theoretical Earth center.

The two different ITRF versions do not share the same origin. The differences between ITRF versions are given by Helmert transformations and these transformations include a translation, i.e. a change of origin.

This is the reason why, when we consider Earth Orientation Parameters, which correspond to small rotations applied when we transform from inertial to Earth frames, we have to decide which ITRF should be considered aligned with the fixed GCRF/EME2000 center, and as a consequence which other ITRF will be offset wrt. that center. This is what is done using ITRFVersionLoader, which uses the Orekit-specific itrf-version.conf file in the orekit-data folder that considers if the EOP have been defined with respect to ITRF-2008, ITRF-2014, ITRF-2020 or whatever. Note that currently, depending on the EOP source (bulletin B, bulletin C, EOPC04, finals…) the reference ITRF is not the same. Typically, the EOP from bulletin B and finals still refer to the old ITRF 2014 realization.

1 Like

Dear Luc,

thank you for your reply. Everything is clear. You mentioned that for “EOP from bulletin B and finals refer to the old ITRF 2014”.
Is there a table, list or reference where it is stated which is the reference ITRF version used according to the type of EOP?

The only reference is our own itrf-version.conf file, and we have to update it manually when IERS changes its reference. We sometimes had to track back the comments in old bulletin files to check when the change was made.If you look for example at the link to the latest bulletinB (this link always points to the latest version), you will see that as of writing (may 2025), it is declared to be consistent with ITRF 2014. This will probably change sometime in the future.

1 Like

Thank you for the quick reply. Everything now is clear and makes sense.
Have a nice week!