pythonastronomypyephem

Why am I getting the wrong solar alt/az from PyEphem?


I've only begun using PyEphem today so I'm at a bit of a loss as to why I get such incredibly incorrect results when I try to calculate the solar altitude and azimuth from an observer point. The code is really simple so I can't imagine where it's going wrong:

import ephem
loc = ephem.Observer()
loc.lon = -118.897123
loc.lat = 34.247778
loc.elevation = 55
sun = ephem.Sun()
sun.compute(loc)

When I print out loc I get:

<ephem.Observer date='2020/6/26 21:10:06' epoch='2000/1/1 12:00:00' lon='-6812:18:12.0' lat='1962:15:11.3' elevation=55.0m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>

The lat/long and time are all right even though they're presented a little weirdly in the print(loc) statement. Still it's 2:10PM in Southern California so there is no reason that sun.alt and sun.az should print out 1.299 and 6.011 respectively.

Can someone please explain what the issue is here? PyEphem looks like a great library if I could just figure out how to use it correctly. Thanks for the help!


Solution

  • Set your lat & lon as strings and format the alt & az as strings:

    >>> loc = ephem.Observer()
    >>> loc.lon = '-118.897123'
    >>> loc.lat = '34.247778'
    >>> sun = ephem.Sun()
    >>> sun.compute(loc)
    >>> f"{sun.alt} {sun.az}"
    '64:36:51.4 251:28:08.8'
    >>> loc
    <ephem.Observer date='2020/6/26 21:43:46' epoch='2000/1/1 12:00:00' lon='-118:53:49.6' lat='34:14:52.0' elevation=0.0m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
    >>>