Расчет времени рассвета и заката с помощью PyEphem - PullRequest
16 голосов
/ 14 апреля 2010

Можно ли рассчитать время рассвета, заката и заката, используя PyEphem ? Я использовал PyEphem для создания дневного и ночного времени, но ничего не нашел на закате / закате / рассвете

Ответы [ 3 ]

24 голосов
/ 05 сентября 2013

Следующий скрипт вычислит время восхода, захода солнца и сумерек с помощью PyEphem. Комментарии должны быть адекватными, чтобы объяснить, что делает каждая часть.

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

Перемещение горизонта объясняет преломление света вокруг кривизны Земли. PyEphem имеет возможность вычислить это более точно, учитывая температуру и давление, но военно-морской астрономический альманах США предпочитает игнорировать атмосферу и просто перемещать горизонт. Я ссылаюсь на USNAA здесь, потому что это авторитетный источник, по которому можно проверить подобные вычисления. Вы также можете проверить ответы на сайте NOAA .

Обратите внимание, что PyEphem принимает и возвращает значения в UTC времени. Это означает, что вам нужно преобразовать ваше местное время в UTC, а затем преобразовать UTC обратно в местное время, чтобы найти ответы, которые вы, вероятно, ищете. На дату, когда я написал этот ответ, Фредериктон, Канада, в часовом поясе ADT отставал на 3 часа от UTC.

Для ударов я также добавил расчет солнечного полдня. Обратите внимание, что это дополнительный час от ожидаемого - это побочный эффект от использования нами летнего времени.

Все это возвращает:

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

Обратите внимание, что нам нужно вычесть 3 часа, чтобы преобразовать их в часовой пояс ADT.

Эта страница документации PyEphem содержит большую часть вышеперечисленного, хотя я постарался уточнить и те моменты, которые мне показались запутанными, и включить важные части этой ссылки здесь, в StackOverflow.

14 голосов
/ 14 апреля 2010

Для рассвет и сумерки , см. документация pyephem относительно сумерек
Короче говоря, рассвет и сумерки выражают время, когда центр Солнца находится под определенным углом ниже горизонта; угол, используемый для этого расчета, варьируется для определения «гражданских», навигационных (морских) и астрономических сумерек, которые используют 6, 12 и 18 градусов соответственно.

В противоположность этому восход соответствует времени, когда край Солнца появляется (или исчезает на закате) чуть выше / ниже горизонта ( 0 градусов). Следовательно, все, гражданские лица, моряки и любители астрономии, получают одинаковое время подъема / установки. (см. Настройки и настройки ВМС США в документации Pyephem ).

Подводя итог , после правильной параметризации pyephem.Observer (установка его широты, долготы, даты, времени, давления («для высоты») и т. Д.) Различных сумеречных времен (рассвет , сумерки) и время восхода и захода солнца получено из
Observer.previous_rising() и Observer.next_setting() методы,
согласно которому первый аргумент ephem.Sun() и
аргумент use_center= должен быть установлен на True для сумеречных вычислений и
горизонт равен либо 0 (или 0:34, если учитывать преломление атмосферы), либо -6, -12 или -18.

4 голосов
/ 14 апреля 2010

Вы можете попытаться установить параметр horizon ниже горизонта в соответствии с различными определениями сумерек / рассвета.

...