org.orekit.errors.OrekitException: ITRF frame ITRF-2020 not found

I’m using the following verison of orekit.
Java version: 1.8.0_332
orekit version: 11.0

here is my python code:
vm = orekit.initVM()
download_orekit_data_curdir()
setup_orekit_curdir()

ITRF = FramesFactory.getITRF(IERSConventions.IERS_2010,True)
earth = OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
Constants.WGS84_EARTH_FLATTENING,
ITRF)

and when I try to run the code using python, a error occured:

<super: <class ‘JavaError’>, >
Java stacktrace:
org.orekit.errors.OrekitException: ITRF frame ITRF-2020 not found
at org.orekit.frames.ITRFVersion.getITRFVersion(ITRFVersion.java:141)
at org.orekit.frames.ITRFVersionLoader$Parser.loadData(ITRFVersionLoader.java:188)
at org.orekit.data.DataProvidersManager$MonitoringWrapper.loadData(DataProvidersManager.java:354)
at org.orekit.data.ZipJarCrawler.feed(ZipJarCrawler.java:218)
at org.orekit.data.ZipJarCrawler.feed(ZipJarCrawler.java:143)
at org.orekit.data.DataProvidersManager.feed(DataProvidersManager.java:312)
at org.orekit.frames.ITRFVersionLoader.(ITRFVersionLoader.java:100)
at org.orekit.frames.BulletinAFilesLoader$Parser.(BulletinAFilesLoader.java:409)
at org.orekit.frames.BulletinAFilesLoader.fillHistory(BulletinAFilesLoader.java:364)
at org.orekit.frames.LazyLoadedEop.getEOPHistory(LazyLoadedEop.java:311)
at org.orekit.frames.LazyLoadedFrames.getEOPHistory(LazyLoadedFrames.java:182)
at org.orekit.frames.AbstractFrames.getCIRF(AbstractFrames.java:400)
at org.orekit.frames.AbstractFrames.getTIRF(AbstractFrames.java:353)
at org.orekit.frames.AbstractFrames.getITRF(AbstractFrames.java:278)
at org.orekit.frames.FramesFactory.getITRF(FramesFactory.java:415)

any help will be appreciated. thanks.

You should update your orekit version to 11.3.2 or do not use the latest physical data provided from the web site but update it by hand.
The IERS 2020 is not supported by versions less than 11.3.2. Therefore, the latest physical data contains IERS 2020 and cannot be parsed by the data crawler.

3 Likes

Thanks, I will Try it.

But in my code, I was using “IERSConventions.IERS_2010”. but the JavaError message gives the hint " ITRF frame ITRF-2020 not found".

I’m confused.

Hi @sparksustc and @uzayt,

It is exactly as @uzayt said. The problem does not lie in your code but in the orekit data which contain the ITRF-2020 frame that cannot be parsed. The JavaError message is a bit misleading in the way that it does not mention “parsing” at all.

Hope i was able to clear up the confusion.

Cheers,
Vincent

1 Like

Hi,

There are two things, the IERS conventions (Orekit supports the 3 available to this date: 1996, 2003 and 2010), and the ITRF version (Orekit supports many, from 1988 to 2020 (this last since 11.2)).

If you do not specify an ITRFVersion when calling FramesFactory.getITRF(...) then Orekit automatically selects it based on the date, as explained in file itrf-versions.conf from the orekit-data repository.

The problem you had (I think) is that the orekit-data repo is not versioned and displays “ITRF-2020” in its content; it is compatible with the latest official version of Orekit.
But since you used Orekit version 11.0, your code didn’t understand the ITRFVersion.ITRF_2020 key, hence the error.

Hope this helps,
Maxime

1 Like

@Vincent @MaximeJ

Thanks a lot for your detailed explanation.
I tried to update my orekit from version 11.0 to the latest 11.3.2.
However, I was using conda based python language for coding.
It seems there is no way to update orekit.

I print the env parameters I was using:

Python 3.6.13 :: Anaconda, Inc.
conda 23.5.0
Java version: 1.8.0_332
Orekit version: 11.0

I use the command to update orekit:
conda install -c conda-forge orekit.

But it doesn’t update orekit.

How can I update my orekit version to 11.3.2?

Best regards.

I tried to specify the ITRF version supported by orekit 11.0, and change the python code as below:

from

ITRF = FramesFactory.getITRF(IERSConventions.IERS_2010, True)

to
ITRF = FramesFactory.getITRF(ITRFVersion.ITRF_2014,IERSConventions.IERS_2010,True)

The same error happend again.

<super: <class ‘JavaError’>, >
Java stacktrace:
org.orekit.errors.OrekitException: ITRF frame ITRF-2020 not found
at org.orekit.frames.ITRFVersion.getITRFVersion(ITRFVersion.java:141)
at org.orekit.frames.ITRFVersionLoader$Parser.loadData(ITRFVersionLoader.java:188)

Hello,

Run this first:
conda update conda

Also, try specifying the Orekit version, like:
conda install -c conda-forge orekit=11.3.2

Best,
Romain.

2 Likes

Thanks. It did work. You are so helpful. thanks again.

And I just tried to fix it without update orekit.

I delete line 32 and 33 in file itrf-versions.conf.

The error just disappeard.

Thank you all for your help.

1 Like