Cos'è NetCDF?
NetCDF (Network Common Data Form) è un formato di file per dati scientifici autodescrittivi (Self-Describing Files, SDF). Questo significa che il file NetCDF contiene sia i dati grezzi che i metadati (informazioni sui dati, come unità, dimensioni, coordinate, ecc.) confezionati insieme.
Nel contesto di GrADS, i file NetCDF e HDF (un formato simile) sono chiamati SDF perché racchiudono dati e metadati nello stesso contenitore. GrADS è in grado di leggere i dati da file NetCDF e HDF, a condizione che i dati siano organizzati su una griglia regolare e che rientrino nello spazio della griglia interna a 5 dimensioni di GrADS (longitudine, latitudine, livello verticale, tempo ed ensemble).
Come GrADS Legge i File NetCDF
GrADS offre tre modi principali per leggere i metadati da un file NetCDF e posizionarli nel suo spazio di griglia interno:
-
Comando
sdfopen:- È il metodo più semplice: basta fornire il nome del file (o un URL OPeNDAP) e GrADS cerca di fare il resto.
- Tuttavia, richiede che tutti i metadati nel file NetCDF siano conformi alle convenzioni COARDS (Cooperative Ocean/Atmosphere Research Data Service).
- Il comando
sdfopennon supporta il formato HDF5.
-
Comando
xdfopen:- Questo metodo richiede un po' più di sforzo da parte dell'utente, in quanto devi scrivere un file descrittore di dati per integrare o sostituire i metadati esistenti nel file NetCDF, in modo che GrADS possa interpretarli correttamente.
- La sintassi del file descrittore utilizzato con
xdfopenè leggermente diversa da quella per i file binari grigliati. xdfopenconsente l'accesso a un numero maggiore di file SDF, inclusi quelli che non aderiscono a standard noti.- Anche
xdfopennon supporta il formato HDF5.
-
Comando
open:- Questo è il metodo che richiede all'utente di scrivere un file descrittore GrADS completo per sovrascrivere tutti i metadati presenti nel file NetCDF. I metadati originali nel file vengono ignorati.
- È il metodo raccomandato per scenari complessi, come l'aggregazione di un gran numero di file dati tramite "templating", quando i dati sono pre-proiettati su una griglia diversa da lat/lon, quando le variabili hanno valori indefiniti diversi, o quando i dati sono stati "impacchettati" (packed) in modo non standard.
- È l'unico modo per leggere i file HDF5 con GrADS (dalla versione 2.0.a7+).
Componenti di un File Descrittore GrADS per NetCDF
Quando si usa il comando
open per i file NetCDF (o HDF-SDS/HDF5), il file descrittore GrADS (.ctl) è un file ASCII a formato libero, dove i componenti di ogni riga sono delimitati da spazi e possono apparire in qualsiasi ordine. Ogni riga inizia con un nome di voce specifico, seguito da argomenti o parole chiave.Ecco alcune voci chiave e le loro specifiche per i file NetCDF:
-
DSET: Specifica il nome del file di dati NetCDF. Se il file descrittore e il file di dati non sono nella stessa directory, è necessario un percorso completo o l'uso del carattere^per indicare un percorso relativo al file descrittore.- Esempio:
DSET ^sample_data.nc(sesample_data.ncsi trova nella stessa directory del file.ctl).
- Esempio:
-
DTYPE: Per i file NetCDF, questa voce deve contenere la parola chiavenetcdfohdfsds. Per i file HDF5, si usahdf5_grid(dalla versione GrADS 2.0.a7+). -
TITLE: Una descrizione concisa del contenuto del dataset, che apparirà nell'output dei comandi di query. -
UNDEF: Specifica il valore dei dati indefiniti o mancanti. È un campo obbligatorio, anche se non ci sono dati indefiniti.- Per i file NetCDF/HDF-SDS, è possibile specificare un secondo argomento opzionale: il nome dell'attributo nel file SDF che contiene il valore indefinito (es.
_FillValue). GrADS convertirà tutti i valori mancanti al valoreUNDEFspecificato nel descrittore. - Esempio:
UNDEF -9.99e8 _FillValue.
- Per i file NetCDF/HDF-SDS, è possibile specificare un secondo argomento opzionale: il nome dell'attributo nel file SDF che contiene il valore indefinito (es.
-
UNPACK: Utilizzato per dati non-float "impacchettati" che devono essere convertiti in float applicando una formula (y = x * scale_factor + add_offset).- Si specificano i nomi degli attributi per il fattore di scala (
scale_factor_attribute_name) e l'offset (add_offset_attribute_name). Se l'offset non esiste, il secondo argomento può essere omesso (l'offset predefinito sarà 0.0). Se c'è solo l'offset, si usa "NULL" per il fattore di scala (dalla versione GrADS 2.0.0+). - Esempi:
UNPACK scale_factor add_offset,UNPACK NULL add_offset.
- Si specificano i nomi degli attributi per il fattore di scala (
-
XDEF,YDEF,ZDEF,TDEF,EDEF: Queste voci definiscono le coordinate delle dimensioni (longitudine, latitudine, livello verticale, tempo ed ensemble) nel file NetCDF. La sintassi è la stessa dei file binari. Puoi usare l'output dincdump -cper ottenere informazioni su queste dimensioni. -
VECTORPAIRS: Specifica esplicitamente le coppie di componenti vettoriali (es.u,v) se i dati sono su una proiezione nativa diversa da lat/lon e i venti devono essere ruotati da un senso relativo alla griglia a un senso relativo alla Terra. -
VARS...ENDVARS: Questo blocco descrive tutte le variabili contenute nel dataset.varname(nome della variabile): Per i file NetCDF/HDF-SDS/HDF5, ilvarnamepuò seguire la sintassiSDF_varname=>grads_varname.SDF_varnameè il nome originale nel file NetCDF (come mostrato dancdump) e deve corrispondere esattamente.grads_varnameè un alias (nome più breve o conforme alle convenzioni GrADS). L'aliasing può essere omesso seSDF_varnamegià rispetta le convenzioni di GrADS.- Se
SDF_varnamecontiene spazi, sostituire~per ogni spazio (dalla versione GrADS 2.0.a3+). - Per HDF5,
SDF_varnamepuò essere molto lungo e includere i nomi dei gruppi nidificati (separati da/). - Esempio:
/HDFEOS/GRIDS/EarthSurfaceReflectanceClimatology/Data~Fields/MonthlySurfaceReflectance=>msr.
- Se
levs(livelli verticali): Un intero che specifica il numero di livelli verticali della variabile. Se una variabile non ha una dimensione Z,levssarà 0. Se ha una dimensione Z,levsdeve essere uguale al valoreznumspecificato nella voceZDEF.units(unità/dimensioni variabili): Per i file NetCDF/HDF-SDS/HDF5, questo campo è un elenco delimitato da virgole delle dimensioni variabili della variabile. Le dimensioni sono espresse comex,y,z,tede, corrispondenti ai cinque assi definiti daXDEF,YDEF,ZDEF,TDEFedEDEF.- L'ordine delle dimensioni in questo elenco è fondamentale, poiché deve descrivere la forma della variabile così come è stata scritta nel file SDF.
- Esempi:
Height=>hgt 17 t,z,y,x Geopotential Height (m)presSFC=>psfc 0 y,x Surface Pressure
- Se il file contiene una variabile che varia in una dimensione non-coordinate (es. intervallo istogramma, banda spettrale, numero ensemble), puoi inserire un numero intero non negativo nell'elenco delle dimensioni variabili che diventerà l'indice dell'array della dimensione extra.
- Esempio:
VAR=>hist0 0 0,y,x First historgram interval for VARVAR=>hist1 0 1,y,x Second historgram interval for VARVAR=>hist2 0 2,y,x Third histogram interval for VAR - Un'alternativa è utilizzare un asse Z non utilizzato per queste dimensioni extra, ma questo potrebbe non essere la rappresentazione più accurata.
- Esempio:
-
@(Attribute Metadata): Usato per aggiungere metadati supplementari al file descrittore, come unità o documentazione.
Note sull'Utilizzo e Limitazioni
- Tipi di dati: GrADS gestisce i tipi di dati NetCDF
short,longefloat. Questi vengono convertiti in tipofloatdopo l'I/O. - Unpacking automatico:
sdfopen/xdfopenpossono gestire l'unpacking automatico se i dati impacchettati sono di tipo "short", le costanti per la trasformazione sono "float" e i nomi degli attributi sono "scale_factor" o "slope" e "add_offset" o "intercept". Altrimenti, è necessario usare il comandoopencon un file descrittore completo e specificare gli attributiUNPACK. - Dati non floating-point: Se i dati non sono numeri floating-point e richiedono una trasformazione con gli attributi
UNPACK, GrADS assume che il valore indefinito della variabile corrisponda ai valori dei dati prima della trasformazione. - Griglie multiple: GrADS può gestire solo una griglia 4D per file di dati. Se un file NetCDF contiene variabili definite su griglie diverse (es. assi di longitudine e latitudine sfalsati), sarà necessario scrivere più file descrittori, uno per ogni griglia.
In sintesi, NetCDF è un formato efficiente per dati scientifici che integra dati e metadati. GrADS offre diversi livelli di interazione con questi file, dal semplice
sdfopen (per file COARDS-compliant) al più dettagliato open con un file descrittore completo, che offre la massima flessibilità per dati complessi o non standardizzati.