Diagramme solaire azimut-hauteur

Où l’on visualise la position du Soleil dans le ciel, en fonction de la date et de l’heure.

L’azimut du Soleil est l’angle entre sa direction et une direction de référence (ici, le point cardinal sud), cet angle étant pris dans le plan horizontal. Par exemple, la direction Est d’un lieu se trouve à l’azimut -90° et la direction Ouest à l’azimut +90°.

La hauteur du Soleil est l’angle entre sa direction et l’horizon, cet angle étant pris dans un plan vertical.

Dans ce diagramme, on place en abscisses l’azimut et la hauteur en ordonnées.

Le diagramme solaire pour la latitude du Havre. On aurait un diagramme très similaire pour Paris (latitude 48.9°).

Les courbes en cloche représentent le chemin suivi par le Soleil à une date donnée. Les lignes numérotées sont les lignes horaires (en heures solaires).

Pour ces dates, on peut lire la hauteur et l’azimut à une date et une heure souhaitée. On retrouve dans ce diagramme des informations plus ou moins évidentes :

  • c’est à midi (solaire) que le Soleil culmine, toute l’année. Il se trouve alors au-dessus du sud (dans l’hémisphère nord), à l’azimut 0°.
  • aux équinoxes de printemps et d’automne, le Soleil se lèvre plein est (azimut -90° et se couche plein ouest, azimut 90°). En automne et en hiver, il se lève plutôt vers le sud-est et se couche vers le sud-ouest. Au printemps, la direction du lever se décale vers le nord-est.
Latitude 43° (sud de la France)
  • Les heures de lever et de coucher varient selon la latitude. C’est également le cas de l’azimut. Plus la latitude diminue, plus le Soleil est haut dans le ciel, et plus l’azimut à l’horizon est resserré autour des points est et ouest.
Latitude 30° (sud du Maroc)

Quand on se trouve dans la zone intertropicale (latitude comprise entre 23.4° et -23.4°), à certaines dates, l’azimut du Soleil commence par augmenter légèrement, puis diminue rapidement jusqu’à -180° jusqu’à midi : le Soleil se trouve alors vers le nord. Sur le diagramme, on voit une discontinuité de l’azimut (passage de -180 à +180°).


Les hautes latitudes :

Latitude 55° (nord de l’Angleterre)
Au-delà du cercle Polaire Arctique.

À la latitude 75°, entre mai et juillet, le Soleil ne se couche pas (hauteur d’environ 8° dès minuit). En revanche, à partir de novembre, le Soleil ne se lève pas.

Au Pôle Nord

Le Soleil suit un chemin horizontal dans le ciel. Aux équinoxes, il frôle l’horizon toute la journée. Les lignes horaires sont devenues verticales, et suivent les lignes d’égal azimut.

Le programme en Python qui trace ce diagramme :


Pour comparer quelques latitudes (image 1.9 MB) :


Comment ce diagramme a-t-il été tracé ?

Toutes les courbes sont tracées point par point, car il n’existe pas de relation directe entre la hauteur et l’azimut. Les relations utilisées :

Pour la relation (1), après avoir calculé l’azimut A, un test est nécessaire :

Si A est positif alors que H est négatif, il faut soustraire 180° à A.

Si A est négatif alors que H est positif, il faut ajouter 180° à A.

Deux boucles for imbriquées décrivent les valeurs d’angle horaire H et de déclinaison. On calcule point par point les valeurs de hauteur et d’azimut avec les relations (1) et (2) ; ces valeurs sont insérées dans des listes. Puis, on trace les courbes d’après les listes obtenues.

Extrait du code pour tracer les lignes horaires :

decl=np.arange(-23.4, 23.4, 0.01)#gamme de déclinaisons
for H in np.arange(-maxH, maxH+15, 15):#boucle pour les valeurs de H
    h=[]#liste vide, destinée à recevoir les hauteurs calculées
    A=[]#liste vide, destinée à recevoir les azimuts calculés
    for D in decl:#2e boucle (imbriquée) parcourant les déclinaisons
        hauteur=np.degrees(asin(sin(np.radians(D))*sin(phi)+cos(np.radians(D))*cos(phi)*cos(np.radians(H))))
        if hauteur>=0:# élimine les hauteurs négatives (soleil couché)
            h.append(hauteur)
            Az=np.degrees(atan(sin(np.radians(H))/(sin(phi)*cos(np.radians(H))-cos(phi)*tan(np.radians(D)))))
            if Az<0 and H>0:#tests de valeurs d'azimut
                Az=Az+180
            else:
               if Az>0 and H<0:
                   Az=Az-180
            A.append(Az)
    plt.plot(A, h)

Extrait du code pour tracer les courbes de déclinaison. Cette fois, c’est la boucle de déclinaisons qui englobe celle des valeurs d’angle horaire :

couleursdecl=['crimson', 'blueviolet', 'royalblue','blue', 'green', 'orange', 'darkolivegreen']#liste de couleurs de déclinaison
datesdecl=['21 déc.', '20 jan.-22 nov.', '19 fév.-23 oct.', '20 mar.-23 sept.', '20 avr.-23 aou.', '21 mai-23 juil.', '21 juin', '']#liste de dates pour la légende

#liste de déclinaisons pour 6 dates :
for i,  D in enumerate([-23.4, -20.15, -11.5, 0, 11.5, 20.15, 23.4]):
    h=[]
    A=[]
    for H in np.arange(-maxH-15, maxH+15, 0.1):
        hauteur=np.degrees(asin(sin(np.radians(D))*sin(phi)+cos(np.radians(D))*cos(phi)*cos(np.radians(H))))
        if hauteur>=0:#évite les calculs inutiles
            h.append(hauteur)
            Az=np.degrees(atan(sin(np.radians(H))/(sin(phi)*cos(np.radians(H))-cos(phi)*tan(np.radians(D)))))
            if Az<0 and H>0:#test de l'azimut
                Az=Az+180
            else:
                if Az>0 and H<0:
                    Az=Az-180
            A.append(Az)
    plt.plot(A, h, c=couleursdecl[i], label=datesdecl[i])

Fichier mis à jour avec deux nouveautés :

  • ajout des courbes de demi-heures
  • possibilité d’ajouter la courbe de déclinaison d’une ou plusieurs dates supplémentaires.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.