Small caution on using PyEphem…

October 1, 2009 | General | By: Mark VandeWettering

My previous post on using PyEphem to compute satellite locations was based upon my experience with the latest version (3.7.3.4). Apparently this includes a fairly serious change to previous versions: by default my FreeBSD box seems to install 3.7.3.3 still, and the next_pass method for observers doesn’t exist. So I thought I’d go back and use whatever calls they did, but next_rising followed by next_setting didn’t seem to return what I would expect. For example, this little program (first find the next rising, then, after that, return the next setting):

#!/usr/bin/env python 

import sys
import os
try:
    import ephem
    print "Using pyephem version", ephem.__version__
except:
    print "couldn't find an installed version of pyephem"
    print "try downloading and installing it from http://rhodesmill.org/pyephem/"
    sys.exit(1)
   

iss = ephem.readtle("ISS (ZARYA)             ",
    "1 25544U 98067A   09270.93046296  .00012316  00000-0  87133-4 0  6870",
    "2 25544  51.6378 139.3506 0009010 136.5725  48.2903 15.74423743622138")

obs = ephem.city("San Francisco")

iss.compute(obs)
print "ISS is currently at alt %f az %f" % (iss.alt, iss.az)
rise = obs.next_rising(iss)
set = obs.next_setting(iss)
print rise, set

sys.exit(0)

When I run this rather simple little program, I get this:

Using pyephem version 3.7.3.3
ISS is currently at alt -1.181396 az 4.241607
Traceback (most recent call last):
  File "./iss", line 22, in <module>
    rise = obs.next_rising(iss)
  File "/usr/local/lib/python2.5/site-packages/ephem/__init__.py", line 385, in next_rising
    return self._riset_helper(body, start, True, False)
  File "/usr/local/lib/python2.5/site-packages/ephem/__init__.py", line 363, in _riset_helper
    d1 = visit_transit()
  File "/usr/local/lib/python2.5/site-packages/ephem/__init__.py", line 317, in visit_transit
    % (body.name, d))
ephem.NeverUpError: 'ISS (ZARYA)' transits below the horizon at 2009/10/2 07:44:16

I haven’t tracked down what the deal is with this yet, but maybe I should keep on with my Python Plan13 code a bit longer.