No EOP history in FramesFactory generated frames

I’ve been using OREKIT since V9.0 via some Python wrappers without many issues. As of 10.3, I’m suddenly having trouble with frames fining the EOP data. In the code below, the “PO” prefix is just the Python data structure that holds the Java handles.

EME_Frame = PO.FramesFactory.getEME2000()
print(“EOP data for EME : {}”.format( PO.FramesFactory.findEOP(EME_Frame)) )
EOP data for EME : None

It is a big problem when trying to set up GroundSites for estimation. Without the EOP data, it throws an exception:

geodetic = PO.GeodeticPoint(0,0,0)
topocentric = PO.TopocentricFrame( BODY_ELLIPSOID, G, ‘TEST’)
print(“EOP history for the topocentric frame: {}”.format( PO.FramesFactory.findEOP(topocentric)))
PO.GroundStation( topocentric )

EXCEPTION : JavaException: JVM exception occurred: missing Earth Orientation Parameters org.orekit.errors.OrekitException

I’m loading the orekit-data directory via the DataProvidersManager and the DirectoryCrawler. All that has worked until recently. And it appears to have data per:

EOP = PO.FramesFactory.getEOPHistory( PO.IERSConventions.IERS_2010 , False)
EOP.getEndDate().toString() : ‘2022-08-28T00:00:00.000’
EOP.getStartDate().toString() : ‘1973-01-02T00:00:00.000’

I’m not sure where it could be failing or how to debug if the data is loaded. Any help is appreciated!

The findEOP method walks the frame hierarchy tree from specified frame to root until it finds a frame that references EOP. The EME2000 frame is just below the root of the tree which is GCRF. These frames are inertial and don’t reference any EOP. You have to start from a frame deeper in the tree to have EOP. A typical frame to start with is ITRF or a topocentric frame.

Luc: thanks so much. Silly mistake on my part. I clearly need to review the frame tree (and I’m not sure how I had it working before!)

Thanks for all your hard work on OREKIT. It is immensely useful!