Trucs
Truc 1 : Lire le temps d'un fichier netcdf
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 :
- L'axe temporel :
nctime = fichier_netcdf.variables['time'][:] # get values
- Les unités du temps :
t_unit = fichier_netcdf.variables['time'].units
- Le calendrier :
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), ......
Truc 2 : Garder seulement la date dans l'axe temporel
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), ............]
Truc 3 : Comment libérer de la mémoire en python?
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.
Scripts
Create a 2-D temperature plot from an RPN file
Script: 2-D_temperature_plot_from_RPN.py3
Script: 2-D_temperature_plot_from_RPN.txt
Create a 2-D temperature plot from a NetCDF file
Script : 2-D_temperature_plot_from_NetCDF.py3
Script : 2-D_temperature_plot_from_NetCDF.txt
Générer une carte de la pression au niveau de la mer et des vecteurs vents centrée sur la mer de Norvège
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
Boucle temporelle
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
0 commentaires