meteortools.utils.getRiseSet

 1# Copyright (C) 2018-2023 Mark McIntyre
 2#
 3import ephem
 4
 5
 6def getNextRiseSet(lati, longi, elev, fordate=None):
 7    """ Calculate the next rise and set times for a given lat, long, elev  
 8
 9    Paramters:  
10        lati:   [float] latitude in degrees  
11        longi:  [float] longitude in degrees (+E)  
12        elev:   [float] latitude in metres  
13        fordate:[datetime] date to calculate for, today if none
14
15    Returns:  
16        rise, set:  [date tuple] next rise and set as datetimes  
17
18    Note that set may be earlier than rise, if you're invoking the function during daytime.  
19
20    """
21    obs = ephem.Observer()
22    obs.lat = float(lati) / 57.3 # convert to radians, close enough for this
23    obs.lon = float(longi) / 57.3
24    obs.elev = float(elev)
25    obs.horizon = -6.0 / 57.3 # degrees below horizon for darkness
26    if fordate is not None:
27        obs.date = fordate
28
29    sun = ephem.Sun()
30    rise = obs.next_rising(sun).datetime()
31    set = obs.next_setting(sun).datetime()
32    return rise, set
def getNextRiseSet(lati, longi, elev, fordate=None):
 7def getNextRiseSet(lati, longi, elev, fordate=None):
 8    """ Calculate the next rise and set times for a given lat, long, elev  
 9
10    Paramters:  
11        lati:   [float] latitude in degrees  
12        longi:  [float] longitude in degrees (+E)  
13        elev:   [float] latitude in metres  
14        fordate:[datetime] date to calculate for, today if none
15
16    Returns:  
17        rise, set:  [date tuple] next rise and set as datetimes  
18
19    Note that set may be earlier than rise, if you're invoking the function during daytime.  
20
21    """
22    obs = ephem.Observer()
23    obs.lat = float(lati) / 57.3 # convert to radians, close enough for this
24    obs.lon = float(longi) / 57.3
25    obs.elev = float(elev)
26    obs.horizon = -6.0 / 57.3 # degrees below horizon for darkness
27    if fordate is not None:
28        obs.date = fordate
29
30    sun = ephem.Sun()
31    rise = obs.next_rising(sun).datetime()
32    set = obs.next_setting(sun).datetime()
33    return rise, set

Calculate the next rise and set times for a given lat, long, elev

Paramters:
lati: [float] latitude in degrees
longi: [float] longitude in degrees (+E)
elev: [float] latitude in metres
fordate:[datetime] date to calculate for, today if none

Returns:
rise, set: [date tuple] next rise and set as datetimes

Note that set may be earlier than rise, if you're invoking the function during daytime.