Remarques sur l'utilisation de NetCDF
ChangeLog --2018 / 07/04 Ajout de la façon de spécifier les valeurs manquantes --2015 / 09/04 Réflexion sur le contenu des commentaires, ajout d'une méthode d'écriture
NetCDF peut être lu par le module netCDF4. Téléchargez et installez à partir de la page Github ou Il est livré en standard avec Anaconda pour Mac et Python (x, y) pour Windows.
import netCDF4
nc = netCDF4.Dataset('filename.nc', 'r')
dim = len(nc.dimensions['dimname'])
var = nc.variables['varname'][:]
nc.close()
import netCDF4
from numpy import dtype
#Créez un objet et définissez le nombre de dimensions.
nc = netCDF4.Dataset('filename.nc', 'w', format='NETCDF3_CLASSIC')
nc.createDimension('ntime', len(time_out)) # e.g. time_out = [0, 1, ...]
# nc.createDimensions('ntime', None) #Lors du réglage sur illimité
nc.createDimension('xi', x) # e.g. x = 10
nc.createDimension('eta', y) # e.g. y = 10
#Après cela, définissez chaque variable.
#L'exemple suivant définit l'heure, la latitude, la longitude et les variables tridimensionnelles.
time = nc.createVariable('time', dtype('int32').char, ('ntime',))
time.long_name = 'time of test variable'
time.units = 'days since 1968-05-23 00:00:00'
lon = nc.createVariable('lon', dtype('double').char, ('eta', 'xi'))
lon.long_name = 'east longitude'
lon.units = 'degree of east longitude'
lat = nc.createVariable('lat', dtype('double').char, ('eta', 'xi'))
lat.long_name = 'north latitude'
lat.units = 'degree of north latitude'
var = nc.createVariable('varname', dtype('double').char, ('ntime', 'eta', 'xi'))
var.long_name = 'test variable'
var.units = 'unit of test variable'
#Enfin, np à l'avance.Remplacez la valeur créée par ndarray etc.
time[:] = time_out
lon[:,:] = lon_out
lat[:,:] = lat_out
var[:,:,:] = var_out
nc.close()
Si vous souhaitez traiter une valeur spécifique comme une valeur manquante, vous pouvez définir fill_value
lors de la création de la variable.
# -Lorsque 999 est une valeur manquante
var = nc.createVariable('varname', dtype('double').char, ('ntime', 'eta', 'xi'), fill_value=-999)
(Ajouté le 04/07/2018, merci @yutabvb)
Recommended Posts