Por que converter NC para HDF5?
Alguns pipelines e ferramentas científicas aceitam HDF5, mas carecem de um driver netCDF dedicado. A conversão produz um arquivo HDF5 puro que qualquer leitor compatível com HDF5, como h5py ou HDFView, pode abrir sem precisar da biblioteca netCDF.
Como converter NC para HDF5
nccopy FREE
Execute nccopy -k netCDF-4 input.nc output.nc para converter um arquivo netCDF clássico para o formato netCDF-4/HDF5; renomeie a saída para .hdf5 se sua ferramenta exigir essa extensão.
Python (netCDF4 + h5py) OPEN-SOURCE
Instale com pip install netCDF4 h5py, leia o arquivo .nc com netCDF4.Dataset() e, em seguida, grave cada variável em um arquivo HDF5 usando h5py.File() e create_dataset().
Sobre estes formatos
Um arquivo .nc é um arquivo netCDF (Network Common Data Form) - um formato binário para dados científicos multidimensionais, como conjuntos de dados climáticos, meteorológicos e oceânicos…
Abrir detalhes de .NC →Um arquivo .HDF5 está associado ao HDF5, um arquivo do tipo misc.
Abrir detalhes de .HDF5 →Qualidade e o que observar
- O netCDF-4 é construído diretamente sobre o HDF5 - se o
ncdump -k seu_arquivo.ncreportarnetCDF-4, você pode renomear o arquivo para.hdf5e abri-lo com h5py ou HDFView sem qualquer conversão. - Arquivos netCDF clássicos começam com os bytes
CDF(hex43 44 46) e não são HDF5 - estes requerem onccopyou uma reescrita em Python para conversão. - O inverso não é verdadeiro: arquivos HDF5 puros não são netCDF válidos, portanto, renomear
.hdf5para.ncnão funcionará sem reestruturar o layout interno para corresponder às convenções do netCDF.
Perguntas frequentes
Como saber se meu arquivo NC já é HDF5?
ncdump -k seu_arquivo.nc; se retornar netCDF-4, o arquivo é HDF5 internamente. Você também pode verificar se os dois primeiros bytes são 89 48 (a assinatura HDF5).O h5py conseguirá ler o arquivo convertido diretamente?
nccopy, o arquivo é um contêiner HDF5 válido; os nomes das variáveis e os dados permanecem intactos, embora a estrutura interna siga as convenções de nomenclatura do netCDF.Os metadados são preservados durante a conversão?
nccopy. Ao usar o h5py diretamente, você deve copiar os atributos manualmente, pois o h5py não transfere metadados netCDF automaticamente.