def get_daylight_details():
    """Get details of solar path/daylight hours at site for today (local)"""

    # Instantiating Astral object (for calculating position of sun and moon)
    a = Astral()
    a.solar_depression = 'civil'

    # Instantiating an Astral location (hard-coded here since dealing with one site only, but
    # easily scalable if site required login and site lat and long were tied to user profile)
    l = Location()
    l.latitude = 37.8195
    l.longitude = -122.2523
    l.timezone = 'US/Pacific'
    l.elevation = 125

    sunrise = l.sunrise().strftime('%-I:%M%p')
    sunset = l.sunset().strftime('%-I:%M%p')
    day_length = str(l.sunset() - l.sunrise())
    solar_noon = l.solar_noon().strftime('%-I:%M%p')
    solar_zenith = l.solar_elevation(l.solar_noon().replace(tzinfo=None))
    solar_elevation = l.solar_elevation()

    daylight_data = {
        'sunrise': sunrise,
        'sunset': sunset,
        'daylength': day_length,
        'solar_noon': solar_noon,
        'zenith': solar_zenith,
        'elevation': solar_elevation
    }

    return jsonify(daylight_data)
Exemple #2
0
def test_Location_SolarNoonUTC():
    c = Location()
    c.solar_noon(local=False)
Exemple #3
0
def test_Location_SolarNoon():
    c = Location()
    c.solar_noon()
from astral import Location
import argparse
import datetime

options = argparse.ArgumentParser()
options.add_argument("lat", name="latitude", type=float)
options.add_argument("lng", name="longitude", type=float)
options.add_argument("timezone")

args = options.parse_args()

loc = Location(("Somewhere", None, args.lat, args.lng, args.timezone, 0))
solar_noon = loc.solar_noon()
afternoon = datetime.datetime.now() > solar_noon
elevation = loc.solar_elevation()

if afternoon:
    angle = 180 - elevation
else:
    angle = elevation

print(angle)