Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/11/2009, à 17:43

arketip

heure de coucher et de lever du soleil

Bonjour,

j'aurai aimé savoir s'il existait une application capable de me donner l'heure de lever et de coucher du soleil.
Est-ce que ça se calcule mathématiquement ?

Merci

PS. j'ai oublié de préciser qu'il faudrait que je puisse la récupérer d'une façon ou d'une autre dans un programme.

Dernière modification par arketip (Le 08/11/2009, à 17:53)

Hors ligne

#2 Le 08/11/2009, à 17:55

wido

Re : heure de coucher et de lever du soleil

Bonjour,
utilise l'applet méteo de gnome (clic droit sur la barre de tâche et recherche celle qui concerne la météo) il y aura des informations sur le couché et le levé du soleil.

Hors ligne

#3 Le 08/11/2009, à 18:00

arketip

Re : heure de coucher et de lever du soleil

Merci, mais est ce que quelqu'un sait où sont stockées les informations affichées sur le disque ?
(Ou comment les obtenir même sans l'applet)

Hors ligne

#4 Le 08/11/2009, à 18:06

wido

Re : heure de coucher et de lever du soleil

Je ne crois pas qu'ils sont marqués sur le disque mais plutôt receptionné sur ce site directement:
http://www.weather.com/outlook/travel/b … _typeahead

Sunrise:
7:49 AM
Sunset:
5:20 PM

mais j'y regarde si je trouve quelque chose. smile

Hors ligne

#5 Le 08/11/2009, à 18:17

arketip

Re : heure de coucher et de lever du soleil

Merci, c'est sympa.

De mon côté je viens de trouver une toute autre approche grâce à ce site qui donne une formule d'approximation: http://pagesperso-orange.fr/jean-paul.c … res_lc.htm
J'essaye le truc et je vous dis si ça marche ou pas :-p

Hors ligne

#6 Le 10/11/2009, à 18:42

arketip

Re : heure de coucher et de lever du soleil

Voici le code que j'avais promis.

C'est écrit en Python mais très facile à adapter à un autre language car n'utilise que des fonctions standarts comme cos, sin, asin, acos... Jettez quand même un oeil sur les convertions en radians et degrés qui peuvent varier selon votre language.

from math import cos, acos, sin, asin, degrees, radians
import datetime

# Source:
# http://pagesperso-orange.fr/jean-paul.cornec/heures_lc.htm
class sunriseClass:
	def __init__(self):
		self.theDay=0
		self.theDate=[]
		self.solarDeclination=0
		self.equationOfTime=0
		self.latitude=0
		self.longitude=0
		self.sunrise=0
		self.sunset=0
		self.meridian=0
		self.duration=0
		self.sunriseTime=0
		self.sunsetTime=0
		self.meridianTime=0
		self.durationTime=0
	def getDay(self,d,m,y):
		d=float(d)
		m=float(m)
		y=float(y)
		n1 = int( (m* 275.0)/9.0 )
		n2 = int( (m+9.0)/12.0 )
		k = 1.0 + int( (y-4.0*int(y/4.0)+2.0)/3.0 )
		n=n1-n2*k+d-30.0
		return int(n)
	def getEoT(self,j):
		j=float(j)
		m = 357.0+(0.9856*j) 
		c = (1.914*sin(radians(m))) + (0.02*sin(radians(2.0*m)))
		l = 280.0 + c + (0.9856*j)
		r=(-2.465*sin(radians(2.0*l))) + (0.053*sin(radians(4.0*l)))
		Equ=(c+r)*4.0
		return Equ/60.0
	def getDec(self,j):
		j=float(j)
		m = 357.0+(0.9856*j) 
		c = (1.914*sin(radians(m))) + (0.02*sin(radians(2.0*m)))
		l = 280.0 + c + (0.9856*j)
		sinDec= 0.3978*sin(radians(l))
		return degrees(asin(sinDec))
	def getHo(self,Dec,Lat,Lon):
		cosHo=( -0.01454-sin(radians(self.solarDeclination))*sin(radians(self.latitude)) ) / ( cos(radians(self.solarDeclination))*cos(radians(self.latitude)) )
		return (degrees(acos(cosHo))/15.0)
	def setNumericalDate(self,d,m,y):
		self.theDate=[d,m,y]
		self.theDay=self.getDay(d,m,y)
		self.solarDeclination=self.getDec(self.theDay)
		self.equationOfTime=self.getEoT(self.theDay)
		return None
	def setLocation(self,Lat,Lon):
		self.latitude=Lat
		self.longitude=Lon
		return None
	def getHM(self,nH):
		h=int(nH)
		m=int(((nH*60.0)%60)+0.5)
		return '%d:%02d' % (h,m)
	def calculateWithUTC(self,UTC):
		mLon=(self.longitude*4.0)/60.0
		Ho=self.getHo(self.solarDeclination,self.latitude,self.longitude)
		self.meridian=12.0+self.equationOfTime-mLon+UTC
		self.sunrise=self.meridian-Ho
		self.sunset=self.meridian+Ho
		self.duration=2.0*Ho
		self.meridianTime=self.getHM(self.meridian)
		self.sunriseTime=self.getHM(self.sunrise)
		self.sunsetTime=self.getHM(self.sunset)
		self.durationTime=self.getHM(self.duration)
		return None


thisDay=datetime.date.today()
mySunrise=sunriseClass()
mySunrise.setNumericalDate(thisDay.day,thisDay.month,thisDay.year)
#mySunrise.setLocation(34.052222,-118.243611) # Los Angeles, UTC -8
#mySunrise.setLocation(41.012222,28.975833) # Istanbul, UTC +2
mySunrise.setLocation(48.856667,2.350833) # Paris, UTC +1
mySunrise.calculateWithUTC(+1)
print 'Date:',mySunrise.theDate[0],'/',mySunrise.theDate[1],'/',mySunrise.theDate[2]
print 'Lever du soleil:',mySunrise.sunriseTime
print 'Passage au méridien:',mySunrise.meridianTime
print 'Coucher du soleil:',mySunrise.sunsetTime
print 'Durée du jour',mySunrise.durationTime

Sortie:

Date: 10 / 11 / 2009
Lever du soleil: 7:52
Passage au méridien: 12:35
Coucher du soleil: 17:17
Durée du jour 9:26

Vous devez entrer vos coordonnées avec .setLocation (je donne trois exemples: Paris, Los Angeles, Istanbul)
N'oubliez pas l'ajustement GTM indispensable (et éventuellement l'ajustement à l'heure d'été selon votre pays)

Voilà, j'espère que ça sera utile à d'autres personnes.

Hors ligne