Où l’on se familiarise avec un module python pour l’astronomie
Je connaissais l’existence du module astropy depuis plusieurs années, mais j’avais mis de côté sa prise en main, car la documentation disponible sur le web me semblait très peu claire. Les tutoriels existent, mais ils prennent comme exemples des situations déjà assez complexes. Je savais seulement que cet outil offrait beaucoup de possibilités et qu’il était connu des astronomes professionnels.
La documentation ne s’est pas soudainement améliorée, mais une vidéo sur Youtube m’a récemment donné la motivation pour tenter quelques scripts, en commençant pas des objectifs similaires à ce que j’ai déjà produit avec le module Skyfield. Voici quelques essais de scripts.
Position d’un astre sur l’horizon
On choisit un astre et une échelle de dates (j’ai tâtonné pour trouver une période où la planète est visible), puis on récupère les coordonnées horizontales (azimut, hauteur) de l’astre. Il faut pour cela définir un lieu d’observation par ses coordonnées géographiques.
Appel des modules :
import matplotlib.pyplot as plt
import numpy as np
from astropy import units as u
from astropy.coordinates import AltAz, EarthLocation, get_body, Longitude, Latitude
from astropy.time import Time
import locale
Définition du lieu d’observation :
lon, lat = 0.11, 49.5 # coordonées géographiques (degrés)
loc = EarthLocation.from_geodetic(lon=Longitude(lon*u.deg), lat=Latitude(lat*u.deg),height=0)
Construction d’une échelle temporelle : on fixe une date initiale t0, puis une série de dates supplémentaires, avant de les ajouter pour avoir l’échelle complète. Je ne comprends pas encore comment gérer les heures UTC et les heures locales.
utcoffset = 0 * u.hour # fuseau horaire
t0 = Time("2022-6-13 01:00:00") - utcoffset
delta_t = np.arange(0, 30, 4) * u.day
t = t0 + delta_t
Récupération des coordonnées locales de l’astre (très simple !) :
nom = 'jupiter'
astre = get_body(nom, t, loc)
coord = astre.transform_to(AltAz(obstime=t, location=loc))
x = coord.az.deg
y = coord.alt.deg
Le script :
Analemme du Soleil (courbe en 8)
Très similaire au précédent. On relève la position du Soleil toute l’année à la même heure. Au lieu de ‘get_body()’, il existe une fonctionnalité ‘get_sun()’. Il est assez facile (plus facile qu’avec Skyfield) de récupérer les données string des dates à partir de l’échelle temporelle définie, si on veut afficher les dates sur le graphique. Le script :
Positions héliocentriques des planètes
Entre les planètes rocheuses et les planètes gazeuses, les ordres de grandeur de temps et de distances sont tellement différents qu’il est vain de vouloir les rassembler dans un même script. Voici les lignes principales du script :
planet_names = ['mercury', 'venus', 'earth', 'mars']
for i, planet in enumerate(planet_names):
astre = get_body(planet, time = t)
coord = astre.transform_to(HeliocentricTrueEcliptic())
lon = coord.lon.radian
dist = coord.distance.au
Pour les planètes gazeuses :







Soyez le premier à commenter