I'm trying to figure out the equation based on TLE data which orbital slot a GEO satellites occupies.

I have the TLE data imported into R and I wish to know what satellites are in adjoining GEO slots. I wish to know the adjoining satellites to a particular slot to give my customer some knowledge of how many Conjunction Analysis have to be performed.

In some replies to this post-- thank you btw -- here is the spreadsheet formula I'm using and i still get erroneous results -

Here is a calculation using values from the TLE headers. I've written it with spreadsheet notation:

mod(RightAscension + sum(MeanAnomaly + Perigee), 360)

I can calculate the altitude from another exercise and it looks correct. However, for longitude (or RA) from the (for example) TLE BSAT-3A the value is 239.9 (599.9 before mod) while www.n2yo.com/ says it 109.9 degrees which seems more correct

  • $\begingroup$ Are you trying to work out the longitude of a satellite based on it's TLE? $\endgroup$
    – user20636
    Apr 8 '19 at 19:17
  • $\begingroup$ I've made an edit to your question to incorporate some of your comments, have a look and feel free to edit further. $\endgroup$
    – uhoh
    Apr 8 '19 at 23:22
  • $\begingroup$ Thanks for the edit! I made a formatting change but I'm not sure I've captured the math correctly now. Can you double check that it looks the way you intend? $\endgroup$
    – uhoh
    Apr 11 '19 at 2:28
  • $\begingroup$ yes, that's it,, i made the sum and mod separately in order to help debugging. $\endgroup$
    – Barry vT
    Apr 11 '19 at 2:36

(EDIT This answer responds to the original question that just referred to "slots" and said nothing about the accuracy required for collision avoidance}

This is certainly do-able as a simple calculation. You will need to recognise a little geometry. How much I explain will depend on your prior knowledge. Please say if you need more explanation on one step or another.

  • The satellite moves around its GEO, or near GEO, orbit and at anytime has an angle from the Earth to an external reference.
  • The rotating Earth also has an angular reference from any given longitude (e.g. 0degrees longitude)

Once you have both angles worked out at some instant you can work out the longitude as the difference between them.

In the following diagram see that for a geostationary object, i.e. one with near zero inclination, the orbit would be coplanar with the equator.

$$ \text{As a result} \Omega, \omega \text{ and } \nu \text{ are all co planar and can be added} $$ $$ \text{ and this gives the total angle from the reference direction,} $$ $$ \aries \text{ to the satellite (celestial body) in the diagram:} $$

Orbital reference terms

As a rough and ready guide (if the inclination of the geostationary satellite is near to zero):

  1. For a near circular, near GEO, satellite orbit take the sum of the right ascension and then the sum of the argument of perigee and mean anomaly. If the inclination is non-zero but small then you could optionally reduce the sum of the latter two quantities by cos(inc). You may have to do some mod() operation depending on the values, i.e if these sum to greater than 360deg.
  2. For the Earth you need a reference of where a given longitude was pointing at some date/time in the past and then walk forward the amount of elapsed time to the time of your TLE. I found an old spreadsheet that suggested I'd previously used 99.968+360.985647*(days.since.1950 - 18262.0) though that is rather flaky and I'd be happy to be corrected. I think it may have come from A Handbook of Geostationary Orbit by Soop, though there must be other references around.

Link to orbital reference terms diagram

  • $\begingroup$ thank you,, for item 1., what is the mathematical expression you have for the first sentence? Doesn't seem like adding these 3 values will give m the R.A.? $\endgroup$
    – Barry vT
    Apr 9 '19 at 2:00
  • $\begingroup$ I hope the diagram helps. By the way can anyone fix my MathJax, it doesn't seem to respond to \aries. $\endgroup$
    – Puffin
    Apr 9 '19 at 11:34
  • $\begingroup$ I wish I could up vote twice! $\endgroup$
    – uhoh
    Apr 9 '19 at 12:19

Since you are looking for satellite conjunctions you will want good accuracy. The values in TLEs are intended only for use by an SGP4 propagator, and not designed to be used in other ways. You can get very approximate results by using them directly, but the results will be incorrect, and you won't be able to tell how incorrect they are!

For example while a simple method might work for crude sorting purposes, a lot of old satellites in graveyard orbits (and those that lost control before making it there) will be cruising very close to GEO with substantial inclination and/or eccentricity and/or creeping along longitude non-synchronously. A simple method to guess positions from TLEs will turn out to be not so simple, and may still miss some particularly interesting cases that may turn out to be the ones you are looking for most!

There are many sources for SGP4 propagation out there (the right way to do it), in many computer languages, but I don't know if there is one that is written in R and also well tested and supported.

I would recommend you try to learn a bit of Python if you don't know it already. I use Skyfield as an easy way to SGP4-propagate TLEs. See How can I plot a satellite's orbit in 3D from a TLE using Python and Skyfield? and also here for example.

I know that for Python there is the Python Package Index or PyPI: https://pypi.org/ which is a central index to search for packages. I noticed that it doesn't include Skyfield (because SGP4 is just a small part of it) and it also fails to show https://github.com/brandon-rhodes/python-sgp4 However, it does show Poliastro https://pypi.org/project/poliastro/ which might also work well for you.

If you know of a similar index of packages or software for the R language, then you can try searching for various combinations of the words TLE, Two Line Element Set orbit, propagation, propagator and of course SGP4!

  • $\begingroup$ @BarryvT see my For example: edit above. I started writing it as a reply comment, but decided it should be part of the post itself. $\endgroup$
    – uhoh
    Apr 9 '19 at 2:06
  • 1
    $\begingroup$ @BarryvT "In the vicinity" - yes. Best way to get a handle on how accurate involves that propagation step again. There are questions elsewhere on space stack exchange addressing this. $\endgroup$
    – Puffin
    Apr 9 '19 at 14:07
  • 1
    $\begingroup$ @uhoh Done, managed to edit it in time. Still haven't got into the habit of the (at) thing $\endgroup$
    – Puffin
    Apr 9 '19 at 14:12
  • $\begingroup$ @BarryvT that's the kind of specific information that should be included within your question where readers will see it. I moved your previous comment back into your question but I think you can see how that works now, so can you give it a try and edit your question and add that? Thanks! Stack Exchange is different than some other sites. Comments are considered temporary and ("should" be) only used to clarify posts. They can be cleaned up at any time without notice. $\endgroup$
    – uhoh
    Apr 11 '19 at 1:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.