OEM Propagator epheremis getStop vs end data fail


I am propagating OEM’s and is getting an error which may or may be the expected way (or i am doing something odd…)

I have an OEM file where metadata end is at time X
The last segment in the OEM data is at X-0.268… seconds. LINEAR interpolation.

I get the start and end date from the .getStart() and .getStop() methods which as expected return the metadata start and stop.

I get the propagator with the .getPropagator() method

When I do an propagator.propagate(start_date, end_date) it fails with:

Java stacktrace:
org.orekit.errors.OrekitException: unable to generate new data after “X-0.268… s”, but data is requested for X which is 2.680000000000007E-1 s after

Do you know, I would assume that the interpolation is continuing after the final data point to the metadata specified stop time?

There are some complexity in the code, so could be something else but seems like more than a truncation error.

Thankful for any comments…

Hi again,

After a night of sleep, this may indeed be an invalid OEM and somewhat right behaviour from orekit. Looking at the CCSDS 502 standard, latest version it seems quite clear that this is outside the spec:

All examples in CCSDS documentation and examples from NASA I have found is conforming to this.

Is there a neat way to get the first / last data time item for an SatelliteEphemeris?


Hello @petrus.hyvonen ,

I believe you are using the Oem class, in which case you can do the following :

segments = oem.getSegments()
lastSegment = segments.get(segments.size() - 1)
lastSegmentDate = lastSegment.getStop()


1 Like