Публичный API для данных о восходе/закате

Существует ли общедоступный API для доступа к данным о восходе/закате? Что касается времени восхода и захода солнца для всех будущих календарных дней?

Ответы (4)

Поскольку время восхода и захода солнца определяется тремя факторами: положением на земле в широте/долготе и высоте, датой плюс, возможно, мешающими объектами, такими как горы, и большинство сервисов не учитывают горы, вам редко нужен публичный API, а не использование библиотеки эфемерид .

В зависимости от того, какой язык вы используете, вы найдете библиотеки, доступные для большинства из них. Затем вам нужно будет указать местоположение, а также ряд определений для восхода/заката - астрономический, гражданский, морской и старый любимый "Когда вы можете отличить черную нить от белой". Такие факторы, как температура, также могут влиять на видимое время восхода/захода солнца за счет изменения атмосферной рефракции.

Хорошая новость заключается в том, что если у вас есть эфемериды, вы можете рассчитать время восхода и захода для других тел, таких как Луна, на любую дату и без подключения к Интернету.

Некоторые популярные библиотеки:

  • Python: PyEphem
  • Java: jparseclibrary
  • Эфемериды C/C++ в основном основаны на анализе данных JPL.

Если вам не нужны другие тела, то уравнение восхода солнца достаточно просто даст вам достаточно хорошее значение.

Также стоит взглянуть на отличных Photographers Ephemeris .

Кажется, что jparseclibrary больше не существует, и веб-сайт проекта, похоже, тоже не работает...
Не только 3 фактора, которые вы упомянули, но и какое определение заката? Астрономический отличается от морского/авиационного, отличается от большинства религий или обычного гражданского использования этого термина.
@ivanivan - я упоминаю астрономические, морские, гражданские и «отличить черную нить от белой», которая является одной из религиозных в пункте 2.

http://sunrise-sunset.org/api

Это бесплатно. Просто нужна кредитная ссылка на сайт.

Я знаю больше API для языка программирования Java. Вот список (в алфавитном порядке):

  • Caarmen/SunriseSunset (на основе формулы, приведенной в Википедии)
  • mikereedell/sunrisesunsetlib-java (на основе простого алгоритма Эда Уильямса)
  • Моя библиотека Time4J , которая предлагает API для расчета восхода/захода солнца/восхода/захода луны и солнцестояний/равноденствий и положений солнца, а также положений и фаз луны. Расчеты в основном основаны на книге «Астрономические алгоритмы» Жана Меуса, но также используют некоторые алгоритмы NOAA . Родственный проект под названием Time4A существует для платформы Android.

Первые две библиотеки используют старый стандартный API-интерфейс даты/времени в Java ( java.util.Calendarи java.util.Date), в то время как Time4J использует свои собственные типы, которые можно легко преобразовать в новый java.time-API (но также и в старый java-API).

Это становится очень сложным — у вас есть несколько определений термина «закат» (и «восход») — астрономическое, морское и гражданское, — а затем возникает проблема широты/долготы. Не забывайте, что в некоторых частях мира солнце не заходит неделями, а через 6 месяцев оно не будет всходить неделями, поэтому есть некоторые крайние случаи, когда FALSE должно быть вернулся.

В PHP определены хорошие функции date_sunrise и date_sunset - я бы либо настроил что-то для вызова через HTTP (S), либо посмотрел фактический источник последней версии PHP.

http://php.net/manual/en/function.date-sunrise.php

http://php.net/manual/en/function.date-sunset.php

Гражданские сумерки 96 градусов - обычно используется для обозначения сумерек.

Морские сумерки 102 градуса - точка, при которой горизонт перестает быть видимым в море.

Астронические сумерки в 108 градусов - момент, когда Солнце перестает быть источником какого-либо освещения.