Dans netCDF3, chaque valeur nécessite la même quantité d'espace disque. Dans netCDF4, il est possible de réduire l'espace disque requis en utilisant la compression gzip. Le taux de compression réel dépend des données. S'il y a beaucoup de valeurs identiques (par exemple des données manquantes), vous pouvez obtenir de bons résultats. Voici un exemple en python:
import netCDF4
import numpy as np
import os
# Define sample data with all elements masked out
N = 1000
data = np.ma.masked_all((N, N))
# Write data to netCDF file using different data formats
for fmt in ('NETCDF3_CLASSIC', 'NETCDF4'):
fname = 'test.nc'
ds = netCDF4.Dataset(fname, format=fmt, mode='w')
xdim = ds.createDimension(dimname='x', size=N)
ydim = ds.createDimension(dimname='y', size=N)
var = ds.createVariable(
varname='data',
dimensions=(ydim.name, xdim.name),
fill_value=-999,
datatype='f4',
complevel=9, # set gzip compression level
zlib=True # enable compression
)
var[:] = data
ds.close()
# Determine file size
print fmt, os.stat(fname).st_size
Voir la netCDF4-python documentation, l'article 9) "compression efficace des variables netCDF" pour plus de détails.