Pour lire le temps d'un fichier netcdf, il faut d'abord ouvrir le fichier :
fichier_netcdf = netCDF4.Dataset(filename)
où filename représente le chemin vers le fichier netcdf.
Par la suite, nous avons besoin de lire trois choses :
nctime = fichier_netcdf.variables['time'][:] # get values
t_unit = fichier_netcdf.variables['time'].units
t_cal = fichier_netcdfvariables['time'].calendar
Il est maintenant possible de transformer l'axe temporel en une série d'objet de type cftime :
tvalue = netCDF4.num2date(nctime,units = t_unit,calendar = t_cal)
Le résultat sera une série d'objet d'objet de type cftime du genre :
cftime.DatetimeProlepticGregorian(2016, 9, 1, 13, 30, 0, 0), cftime.DatetimeProlepticGregorian(2016, 9, 2, 13, 30, 0, 0), ......
Advenant le fait que votre fichier netcdf contient des moyennes quotidiennes, l'heure associée à chaque pas de temps peut parfois ne pas être importante ou ne pas toujours faire du sens. Il est possible de s'en séparer si la seule chose que vous désirez est la date et non pas l'heure.
Il faut modifier la ligne suivante du truc 1 afin que le résultat de num2date consiste en le format natif de date python de type datetime.
tvalue = netCDF4.num2date(nctime,units = t_unit,calendar = t_cal)
doit devenir
tvalue = netCDF4.num2date(nctime,units = t_unit,calendar = t_cal,only_use_cftime_datetimes=False,only_use_python_datetimes=True)
Par la suite, nous pouvons utiliser la fonction date() pour ne garder que la date :
tvalue_date = [i.date() for i in tvalue]
Le résulat ressemblera à :
[datetime.date(2016, 9, 1), datetime.date(2016, 9, 2), datetime.date(2016, 9, 3), datetime.date(2016, 9, 4), ............]
Certaines grosses matrices peuvent causer python à occuper beaucoup de mémoire vive. Si une grosse matrice n'est plus utilisé dans un script, il peut être opportun de la supprimer et d'appeler gc.collect() afin que l'espace mémoire soit libérer. Cela se fait de la façon suivante dans un script :
import gc # En début de script
……………………
# Pour libérer un peu de mémoire
del matrice
gc.collect()
où matrice doit être remplacé par la matrice que vous désirez supprimer.
Script: 2-D_temperature_plot_from_RPN.py3
Script: 2-D_temperature_plot_from_RPN.txt
Script : 2-D_temperature_plot_from_NetCDF.py3
Script : 2-D_temperature_plot_from_NetCDF.txt
Ce script donne un aperçu de comment générer une carte avec des contours de pression et des vecteurs de vents le tout dans un secteur bien précis.
Script (.py3) : dessiner_msl_vent_ERA5_box_demo.py3
Script (.txt) : dessiner_msl_vent_ERA5_box_demo.txt
Ce script est un petit exemple d'une boucle temporelle permettant d'incrémenter l'année et le mois entre un mois et une année de départ et un mois et une année de fin.
Script (.py3) : boucle_temporelle.py3
Script (.txt) : boucle_temporelle.txt