Question

Just got the basics of PyEphem working on my Raspberry Pi. Working really well.

The approach to getting the next_pass of an object (in my case the ISS) is very useful... but I really also want to be able to take in to account the actual visual magnitude for the observer. That way I could list only the VISIBLE passes of the ISS rather than all of them.

Is there some method to calculate the visual magnitude by accounting for the position of the Observer, the ISS and the Sun?

Thank for any suggestions.

Was it helpful?

Solution

EDIT: ANSWER Found my own answer to this question. By all means read the rest of the post for details. The quick summary is that I calculate the separation angle between the sun and the iss. With the two known distances (sun.earth_distance) and iss.range) I then solve the triangle to get the phase angle. This gets pumped in to the magnitude equation below... and VIOLA. The values returned by this seem to be close to what is on Heavens-above.com. That's all I wanted.

EDIT: See this post for the actual Python code I use to calculate the phase angle.

NOTE: I am really not sure how my edits are handled. I saw a prior note that my edits would be displayed after moderation - however I expected to still see my edits shown in the post. Now nothing is there. My edits are actually more of an answer to my own question in any case. MODERATOR: Please do NOT delete this answer. It contains an appropriate ANSWER to my own question that I have further researched and I think is relevant. THANK YOU!!

Many online services that supply satellite predictions do in fact provide magnitude predictions as well. Heavens-Above.com is one such site so there are definitely techniques out there to do this.

The predictions for the ISS that are available on Heavens-Above are generally pretty reliable and take in to account when it will pass in to the earths shadow. EDIT: In fact PyEphem does show if a satellite is eclipsed or not. body.eclipsed

Also while the ISS is known to occasionally flash brighter than predicted that is still a pretty rare occurrence and I'm not too interested in predicting that (and I would agree trying to do that seems rather pointless). Iridium fares are of course very variable in visual magnitude - but nevertheless are very predictable based upon the location the observer / satellite / angle of their highly polished antenna and the sun.

I'm really just looking some pointers to an approach to calculate this using the PyEphem library if possible.

Thanks again for any pointers to actually do this.

EDIT:I found a discussion about this very point here-> http://www.satobs.org/seesat/Apr-2001/0313.html

>Mag = Std. Mag - 15 + 5*LOG(Range) -
>      2.5*LOG(SIN(B) + (pi-B)*COS(B))
>
>where Range is in km, and B is in radians and measures
>the angle from the sun to the satellite to the observer.
>At full phase, B is 0; at new phase, B is pi (i.e.
>satellite transiting the sun).
enter code here

Standard.Mag I use for the ISS is -1.3 (intrinsic brightness at 1000km) - several online sources reference this. e.g. http://satobs.org/seesat/Aug-2005/0114.html and this one Quicksat intrinsic magnitudes file: qsmag.zip

I've got a sense that PyEphem has the capability to do this calculation given a starting magnitude (std.mag) number. There are "standard" magnitude numbers available on the internet (not sure how they are calculated... but they are available none-the-less).

So.. the bit I am not 100% certain on is how to get that angle B. I'll be looking at that next (note: worked this out - see top of the post)

OTHER TIPS

It does not look like PyEphem includes any satellite magnitude models. The brightness of a satellite depends not only on its size and how reflective its materials are, but it depends on the particular orientation of the satellite at a given moment — because different surfaces on the same satellite often have remarkably different brightnesses.

And, in fact, many satellites flash periodically as they go overhead because of bright thermal shielding or shiny solar panels happening to catch the sun for the angle of a particular observer. But, of course, an observer just a few miles away might not see those flashes, depending on the exact angles involved. And if the satellite were tilted just a few degrees differently, the flashes might not be visible to an earth-bound observer at all.

Of course, all of this applies only when the satellite is in sunlight up at its altitude; if the satellite is far in the shadow of Earth's nighttime, then it will be a quite dark object. The cut-off between bright and dark would not be absolute but gradual, as light from the annular sunrise/sunset that stands in a perpetual ring around the Earth begins to brighten the satellite several degrees from the position where it actually comes into full sunlight.

And, again, PyEphem unfortunately makes no attempt to do the kind of 3D modeling, or even a rough approximation to it, that would be necessary to accurately produce a satellite magnitude.

Since B is the sun to the satellite to the observer, wouldn't that be the altitude of the ISS plus the sun's altititude?

or body.alt + abs(sun.alt)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top