Generation of TLE


Hi all,

Is there a way to generate a TLE in an existing version of Orekit (current or in dev) ?
If not, how would you do it in Orekit ? In other softwares like STK and GMV, it seems that there is fitting of the TLE to the existing orbit.

Thanks and have a nice day !


Yes, you will find all you need in the propagation.conversion package.
You should use a FiniteDifferencePropagatorConverter, built with a TLEPropagatorBuilder, to convert any type of propagator or a list of SpacecraftState into a TLEPropagator from which you will get the TLE that best fits the given input.


Hi @nrol,

If you want to create a TLE file from an Orekit orbit object, as Pascal said you should fit a TLEPropagator to a sample you generated with a NumericalPropagator.

For instance :

      List<SpacecraftState> sample = new ArrayList<SpacecraftState>();
      for (double dt = 0; dt < duration; dt += stepSize) {
      TLEPropagatorBuilder builder = new TLEPropagatorBuilder(tle, PositionAngle.TRUE, 1.0);
      FiniteDifferencePropagatorConverter fitter = new FiniteDifferencePropagatorConverter(builder, threshold, 1000);
      fitter.convert(sample, false);
      TLEPropagator tleProp = (TLEPropagator) fitter.getAdaptedPropagator();
      TLE fitted = tleProp.getTLE();

I hope it can help you.


Thank you both for your answers, I’m trying it now.

Regarding the call of the convert method, it seems to need a third argument being “freeParameters” (as a list of Strings).
Which values should I use here ?

edit : nevermind, I think I found it, it is probably DragSensitive.DRAG_COEFFICIENT for example ?


The “freeParameters” in the convert method is a varargs, an optional argument. For the TLEPropagator, the only free parameter should the b* from the TLE, i.e. if you declare TLEPropagator.B_STAR as free parameter, then it will be estimated when fitting, otherwise it will be set to zero.