Calcul du lever et du coucher du soleil avec java


Je recherche un moyen de calculer le lever du soleil et pour un fuseau horaire aka emplacement. Je voudrais quelque chose de similaire à Zend_Date.

L'idée est d'avoir une application où vous pouvez sélectionner un emplacement et en fonction de cela, vous obtenez l'heure réelle et aussi le lever du soleil,- définir l'heure.

Bravo et merci,
-lony

Author: Nate, 2011-02-08

5 answers

Jetez un oeil àsunrisesunsetlib-java qui calcule les heures de lever/coucher du soleil à partir des coordonnées GPS et d'une date.

 10
Author: dogbane, 2011-02-08 17:06:38

Calculer le lever et le coucher du soleil est en fait un problème très difficile à résoudre et la plupart des bibliothèques qui prétendent le faire utilisent des modèles trop simples du système solaire qui ne produisent pas de résultats précis.

Les orbites de la Terre autour du Soleil et de la Lune autour de la Terre sont irrégulières, l'axe de rotation de la Terre vacille de deux manières différentes (précession et nutation), et les échelles de temps utilisées par les astronomes ne sont pas d'accord avec le temps universel coordonné (UTC). En plus de cela, la réfraction atmosphérique déforme la position perçue des corps célestes (en particulier près de l'horizon); le lever et le coucher du Soleil et de la Lune sont généralement définis par la première apparition du disque au-dessus de l'horizon, et non par le passage du centre du disque; et la taille perçue du disque varie au fil du temps en fonction

J'avais besoin d'un calcul précis de cela pour un projet sur lequel je travaillais et j'ai écrit une bibliothèque pour le faire qui intègre l'ensemble de l'état-de-la-art des modèles.

Nous proposons également une API Web pour cela et l'API Web et la bibliothèque Java se trouvent à l'adresse suivante:

Http://askgeo.com/

Ce site offre également beaucoup d'autres informations qui dépendent de la latitude et de la longitude. Vous pouvez lire les détails de la Bibliothèque ici:

Http://askgeo.com/database/Astronomy

La bibliothèque et l'API web sont commerciales mais nous donnons un accès gratuit à l'API Web pour qualifier organismes à but non lucratif, chercheurs et projets open source. Pour les utilisateurs commerciaux, les informations sur les prix se trouvent à l'adresse suivante:

Http://askgeo.com/#pricing

La bibliothèque qui donne le lever et le coucher du soleil (entre autres) est celle "Astronomie" de la liste.

 4
Author: James D, 2012-06-04 20:20:48

Tout à l'heure, j'ai publié Time4J-v4.29, qui prend également en charge lever du soleil/coucher du soleil-calculs. Exemple:

 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-compatibilité:

Les résultats de la classe SolarTime (de type Moment ou PlainTimestamp) peuvent être facilement convertis en Java-8-les types comme Instant ou LocalDateTime, généralement par l'appel de la méthode toTemporalAccessor().

À Propos de l'algorithme:

L'algorithme est le même que celui utilisé par NOAA (avec la principale différence étant que les calculs delta-T sont également pris en compte par Time4J). L'algorithme NOAA (qui est pratiquement le même que celui développé par Jean Meeus) est plus précis que l'algorithme Williams utilisé par la bibliothèque sunrisesunsetlib mentionné dans la réponse de @dogbane, en particulier près ou dans les régions polaires. Cependant, Time4J prend également en charge l'algorithme Williams en spécifiant le nom de la calculatrice. Cet algorithme simple est toujours utilisable dans des emplacements géographiques et des rendements normaux précision de 1-2 minutes.

Autres caractéristiques:

Certains gadgets comme l'heure bleue, diverses définitions du crépuscule, la durée de l'ensoleillement ou la détermination de la nuit polaire / soleil de minuit ou l'impact de l'altitude des observateurs sont également pris en charge, voir l'API.

Remarque sur la précision:

Quoi qu'il en soit, nous devons toujours garder à l'esprit que les faits topologiques comme les montagnes ou les conditions météorologiques spéciales ont un fort impact sur les temps réels du lever/coucher du soleil et ne peuvent pas être modélisé dans n'importe quelle bibliothèque prenant en charge les calculs de lever/coucher du soleil.

 2
Author: Meno Hochschild, 2017-09-10 10:20:39

Vous pouvez utiliser commons-suncalc , une bibliothèque sans dépendance pour Java 7 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());
 2
Author: simon04, 2018-02-27 07:44:15

Vous pouvez utiliser ce service Web gratuit pour obtenir sunsrise et sunset times

, Il est très facile à utiliser. Il répond aux heures en GMT, vous devez donc effectuer la conversion lat/lon en fuseau horaire si vous en avez besoin.

 0
Author: Jose Florido, 2016-02-23 21:31:31