python - Cálculo de las horas de amanecer y atardecer usando PyEphem
astronomy (3)
¿Es posible calcular los tiempos de amanecer, anochecer y atardecer usando PyEphem ? He utilizado PyEphem para producir día y noche, pero no encontré nada en la puesta de sol / atardecer / amanecer
El siguiente script calculará los tiempos de amanecer, atardecer y crepúsculo utilizando PyEphem. Los comentarios deben ser adecuados para explicar lo que está haciendo cada parte.
import ephem
#Make an observer
fred = ephem.Observer()
#PyEphem takes and returns only UTC times. 15:00 is noon in Fredericton
fred.date = "2013-09-04 15:00:00"
#Location of Fredericton, Canada
fred.lon = str(-66.666667) #Note that lon should be in string format
fred.lat = str(45.95) #Note that lat should be in string format
#Elevation of Fredericton, Canada, in metres
fred.elev = 20
#To get U.S. Naval Astronomical Almanac values, use these settings
fred.pressure= 0
fred.horizon = ''-0:34''
sunrise=fred.previous_rising(ephem.Sun()) #Sunrise
noon =fred.next_transit (ephem.Sun(), start=sunrise) #Solar noon
sunset =fred.next_setting (ephem.Sun()) #Sunset
#We relocate the horizon to get twilight times
fred.horizon = ''-6'' #-6=civil twilight, -12=nautical, -18=astronomical
beg_twilight=fred.previous_rising(ephem.Sun(), use_center=True) #Begin civil twilight
end_twilight=fred.next_setting (ephem.Sun(), use_center=True) #End civil twilight
La reubicación del horizonte explica la luz que se refracta alrededor de la curvatura de la Tierra. PyEphem tiene la capacidad de calcular esto más exactamente dada la temperatura y la presión, pero el Almanaque Astronómico Naval de los EE. UU. Prefiere ignorar la atmósfera y simplemente reubicar el horizonte. Me refiero a USNAA aquí porque es una fuente autorizada contra la cual se pueden verificar este tipo de cálculos. También puede consultar las respuestas en el sitio web de NOAA .
Tenga en cuenta que PyEphem toma y devuelve valores en tiempo UTC . Esto significa que tiene que convertir su hora local a UTC y luego convertir UTC de nuevo a la hora local para encontrar las respuestas que probablemente esté buscando. En la fecha en que escribí esta respuesta, Fredericton, Canadá, en la zona horaria ADT estaba 3 horas por detrás de UTC.
Para las patadas, también he lanzado un cálculo del mediodía solar. Tenga en cuenta que esta es una hora libre adicional de lo que usted esperaría, es un efecto secundario de nuestro uso del horario de verano.
Todo esto devuelve:
begin civil twilight: 2013/9/4 09:20:46
sunrise: 2013/9/4 09:51:25
noon: 2013/9/4 16:25:33
sunset: 2013/9/4 22:58:49
end civil twilight: 2013/9/4 23:29:22
Tenga en cuenta que tendríamos que restar 3 horas para convertirlos a la zona horaria ADT.
This página de documentación de PyEphem contiene gran parte de lo anterior, aunque he intentado aclarar los puntos que encontré confusos e incluir las partes importantes de ese enlace aquí en .
Para el amanecer y el atardecer , vea la documentación de pyephem sobre el crepúsculo.
En pocas palabras, el amanecer y el atardecer expresan el momento en que el centro del Sol se encuentra en un ángulo particular debajo del horizonte; el ángulo utilizado para este cálculo varía según la definición de "civil", navegación (náutica) y crepúsculos astronómicos que utilizan 6, 12 y 18 grados respectivamente.
En oposición, la salida del sol corresponde al momento en que aparece el borde del Sol (o desaparece, para la puesta del sol) justo arriba / debajo del horizonte (0 grados). Por lo tanto, todos, los civiles, los navegantes y los entusiastas de la astronomía tienen los mismos tiempos de aumento / ajuste. (Consulte los incrementos y ajustes del Observatorio Naval en la documentación de Pyephem ).
Para resumir , una vez que uno haya parametrizado correctamente un pyephem.Observer
(configurando su lat, long, date, time, presión (? Para altitud?), Etc.), las diferentes horas de penumbra (amanecer, anochecer) y las horas de amanecer y atardecer se obtienen de la
Observer.previous_rising()
y Observer.next_setting()
métodos,
donde el primer argumento es ephem.Sun()
y
el argumento use_center=
debe establecerse en True
para los cálculos de crepúsculo, y
el horizonte es 0 (o 0:34 si tiene en cuenta la refracción de la atmósfera) o -6, -12 o -18.
Puede intentar establecer el parámetro de horizon
debajo del horizonte de acuerdo con las diferentes definiciones de atardecer / amanecer.