Lever et coucher de Soleil

Bonjour,

Je souhaite afficher quelque part les horaires de lever et coucher du Soleil locaux.
Pour ce faire, j’utilise la bibliothèque Python ephem (qui se trouve dans les dépôts de Debian).
J’ai fait ce bout de programme :

#!/usr/bin/python3 -B

def ephem ():
	from ephem import Observer, Sun, localtime
	
	o = Observer ()
	o.lat = 44.8681659
	o.long = -0.5707669
	
	s = Sun ()
	s.compute ()
	
	r = 'Soleil :'
	if o.next_rising (s) < o.next_setting (s):
		r += '\n Lever : ' + localtime (o.next_rising (s)).strftime ('%H:%M:%S')
		r += '\n Coucher : ' + localtime (o.next_setting (s)).strftime ('%H:%M:%S')
	else:
		r += '\n Coucher : ' + localtime (o.next_setting (s)).strftime ('%H:%M:%S')
		r += '\n Lever : ' + localtime (o.next_rising (s)).strftime ('%H:%M:%S')
	
	return (r)


if __name__ == '__main__':
	print (ephem ())

Si je le lance, j’obtiens le résultat suivant :

Soleil :
 Lever : 10:40:31
 Coucher : 19:14:08

Ce qui est faux.
D’après ce que je peux voir dans Stellarium, le Soleil se lève vers 8h16 et se couche vers 17h20.
À la limite, on peut dire que l’heure du coucher est en retard de deux heures, ce qui peut correspondre à une erreur de conversion de fuseau horaire, mais pour le lever, je ne vois pas.

Quelqu’un a une idée ?

1 J'aime

Bonjour,

Sans connaître ephem, on dirait qu’il s’agit d’un problème de coordonnées. Tu es sûr que tu es dans le bon système ?

J’ai testé, ça semble être ça.
Si tu remplaces tes coordonnées par :

o.lat = '44:52:5.397'
o.long = '00:34:14.761'

ça renvoie :

Coucher : 17:21:58
Lever : 08:07:46

Ce qui semble plus acceptable.

Pour convertir rapidement des degrés décimaux en degrés sexagésimaux, je recommande cs2cs du paquet proj-bin :

echo "-0.5707669 44.8681659" | cs2cs +init=epsg:4326 +to +init=epsg:4326

0d34’14.761"W 44d52’5.397"N 0.000

Mais comme tu sembles aimer Python, il y a certainement moyen de trouver une bibliothèque pour faire la conversion dans ton script !

1 J'aime

Je te confirme que ça fonctionne aussi beaucoup mieux après conversion des vraie coordonnées rentrées.

Oui, effectivement, j’aime bien Python, du coup, j’ai fait la conversion en utilisant Python comme d’une calculatrice. Ce genre de conversion peut se faire à la main, pas besoin d’outil.
Merci beaucoup pour tes réponses, @lsam.