簡體   English   中英

netcdf4-python:讀取變量存儲參數

[英]netcdf4-python: Reading variable storage parameters

我試圖手動將 NetCDF 文件的所有維度、變量和屬性復制到新文件中。 使用 python 復制 netcdf 文件一樣,這很有效,除了像“fill_value”或“chunksizes”這樣的存儲參數。 ncdump -sch ,這些參數用前導下划線 (_) 顯示:

    float var1(time, lat, lon) ;
        var1:_FillValue = NaNf ;
        var1:grid_mapping = "crs" ;
        var1:unit = "m" ;
        var1:_Storage = "chunked" ;
        var1:_ChunkSizes = 1, 14, 146 ;
        var1:_DeflateLevel = 9 ;
        var1:_Shuffle = "true" ;
        var1:_Endianness = "little" ;

createVariable 中,我可以為新變量設置這些參數,但是如何使用 netcdf4-python 模塊從現有文件中獲取諸如“fill_value”或“chunksizes”之類的參數? 讀取這些參數的語法是什么?

有關塊大小的信息,您可以對變量使用chunking()方法。 不幸的是,如果將_FillValue設置為非默認值,您似乎只能訪問它:

from netCDF4 import Dataset
import numpy as np

nc = Dataset('data.nc', 'w')
nc.createDimension('t', 10)
var = nc.createVariable('temp', 'f', ('t',), fill_value=80)
var[:] = np.arange(10)
nc.close()

nc_read = Dataset('data.nc')
temp = nc_read.variables['temp']
print(temp.chunking())
print(temp._FillValue)

所以現在看起來處理填充值的最簡單方法是:

fill = getattr(temp, '_FillValue', mydefaultvalue)

可能值得在GitHub 上向上游提出問題。

謝謝,這就像一個魅力! 我已經解決了處理未定義的_FillValue現在像:

try: fillVal = variable._FillValue
except: fillVal = netCDF4.default_fillvals[str(variable.dtype.kind)+str(variable.dtype.itemsize)]

看起來有點復雜,但似乎dtype對於default_fillvals的預期輸入沒有輸出格式方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM