Heads up II - Astro-satpass modifications

The Astro-satpass distribution contains classes to compute satellite position and visibility. If you are using it, please read on. If you think I should continue to deliver change notifications via this blog, please let me know, otherwise I will stop doing so, and merely give notice via electronic mail.

On June 11 2011 I wrote about the changes to the Astro::Coord::ECI::TLE pass() method which were in release 0.039_04. The blog entry detailed those changes and expressed the intent to make another release in about two weeks.

A respondent questioned the performance of the pass() method when the interval attribute was positive. This attribute causes the pass() method to return periodic positions during the pass, as well as the significant events of the pass. Investigation revealed a serious inefficiency in this functionality, and turned up some more “edge case” pass prediction problems.

Because of the further changes to the pass() method, I have made another development release: 0.039_05. I intend to allow another two weeks for evaluation and feedback before making either another development release (if further issues turn up) or a production release (if not).

The specific problems fixed in this release are:

  • Versions 0.039_03 and 0.039_04 occasionally reported passes which ended shortly before the prediction interval started.

  • Versions 0.039_03 and 0.039_04 sometimes calculated the wrong max time. Again.

  • Passes in progress when the prediction interval started were still sometimes being missed if the visible attribute was false.

  • The calculation of positions periodically during the pass (controlled by the interval attribute) was anywhere from slightly slower to horribly slower than it needed to be. Also, the illumination reported for these positions was sometimes wrong. The re-implementation reports positions starting from the rise of the satellite. The original implementation reported positions starting from the start of the prediction interval, Since this was undocumented I feel justified in changing it, but since this is a development release I also feel justified in changing it back (which I think I can do without re-incurring the performance penalty) if someone is relying on the old functionality.

  • Added new attribute lazy_pass_position, which gives the pass() method permission to not calculate and report the position of the event. Currently, this only affects the periodic positions calculated in response to setting the interval attribute.

  • The pass command in the satpass script did not display periodic positions even when the verbose setting was true.

The validation was again partially automated, so all I really know is how the code performs versus 0.039. Please let me know if you have any problems or concerns. I can be reached by electronic mail at wyant at cpan dot org.

Thank you for your time and attention,

Tom Wyant


I had never heard of the Astro-satpass distribution until you posted this blog entry. In the interests of promoting the wide-ranging uses of Perl I would hope that you continue blogging your updates.

Leave a comment

About Tom Wyant

user-pic I blog about Perl.