Расчет восхода и захода солнца с помощью Java - PullRequest
10 голосов
/ 08 февраля 2011

Я ищу способ вычисления восхода и захода для заданного часового пояса или местоположения. Я хотел бы что-то похожее на Zend_Date .

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

Приветствия и спасибо,
-lony

Ответы [ 5 ]

10 голосов
/ 08 февраля 2011

Взгляните на sunrisesunsetlib-java , который вычисляет время восхода / захода солнца из GPS-координат и даты.

4 голосов
/ 27 февраля 2018

Возможно, вы захотите использовать commons-suncalc , независимую библиотеку для Java ⩾7:

Date date = // date of calculation
double lat, lng = // geolocation
SunTimes times = SunTimes.compute()
            .on(date)       // set a date
            .at(lat, lng)   // set a location
            .execute();     // get the results
System.out.println("Sunrise: " + times.getRise());
System.out.println("Sunset: " + times.getSet());
4 голосов
/ 10 сентября 2017

Только что я выпустил Time4J-v4.29 , который также поддерживает вычисления восхода / заката . Пример:

 SolarTime hamburg = SolarTime.ofLocation(53.55, 10.0);
 Optional<Moment> result = PlainDate.nowInSystemTime().get(hamburg.sunrise());
 System.out.println(result.get().toZonalTimestamp(() -> "Europe/Berlin"));

Java-8-совместимость:

Результаты класса SolarTime (типа Moment или PlainTimestamp) можно легко преобразовать в типы Java-8, такие как Instant или LocalDateTime, обычно путем вызова метода toTemporalAccessor().

Об алгоритме:

Основной алгоритм такой же, как в NOAA (с основным отличием, что дельта-Т-расчеты также учитываются Time4J). Алгоритм NOAA (который практически совпадает с разработанным Жаном Миусом) является более точным, чем алгоритм Уильямса, используемый библиотекой sunrisesunsetlib, упомянутой в ответе @dogbane, особенно вблизи или в полярных регионах. Однако Time4J также поддерживает алгоритм Уильямса, указав имя калькулятора. Этот простой алгоритм все еще может использоваться в обычных географических точках и дает точность 1-2 минуты.

Другие особенности:

Некоторые уловки, такие как синий час, различные определения сумерек , длина солнечного света или определение полярной ночи / полуночного солнца или влияние высоты наблюдателей, также поддерживаются, см. API.

Примечание о точности:

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

Android:

Для Android-платформы используйте Time4A (сестра Time4J) с оптимизированным доступом к ресурсам.

4 голосов
/ 05 июня 2012

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

Орбиты Земли вокруг Солнца и Луны вокруг Земли нерегулярны, ось вращения Земли колеблется двумя различными способами (прецессия и нутация), и временные шкалы, используемые астрономами, не согласуются с согласованными всемирное время (UTC). Кроме того, атмосферная рефракция искажает воспринимаемое положение небесных тел (особенно вблизи горизонта); восход и заход Солнца и Луны обычно определяются первым появлением диска над горизонтом, а не прохождением центра диска; и воспринимаемый размер диска изменяется с течением времени в зависимости от его расстояния от наблюдателя.

Мне нужен был точный расчет этого для проекта, над которым я работал, и написал для этого библиотеку, которая включает в себя все современные модели.

Мы также предлагаем для этого веб-API, и веб-API, и библиотеку Java можно найти по адресу:

http://askgeo.com/

Этот сайт также предлагает много другой информации, которая зависит от широты и долготы. Подробнее о библиотеке вы можете прочитать здесь:

http://askgeo.com/database/Astronomy

Библиотека и веб-API являются коммерческими, но мы предоставляем бесплатный доступ к веб-API для квалифицированных некоммерческих организаций, исследователей и проектов с открытым исходным кодом. Для коммерческих пользователей информация о ценах:

http://askgeo.com/#pricing

Библиотека, которая дает восход и закат (среди прочего), является "Астрономической" в списке.

0 голосов
/ 24 февраля 2016

Вы можете использовать этот бесплатный веб-сервис для получения времени восхода и заката солнца

Это очень просто в использовании.Он реагирует на время по Гринвичу, поэтому вам нужно конвертировать широту / долготу в часовой пояс, если вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...