Posted at

Python netCDF4でvariablesの有無を確認する方法

複数の、variables属性がバラバラのファイルを操作しなければならなかったので、

その時に使用したコードの一部をメモします。

netCDF サンプルデータ

https://www.unidata.ucar.edu/software/netcdf/examples/sresa1b_ncar_ccsm3-example.nc



1.NetCDFのvariables一覧を取得・表示する方法

import netCDF4

ncFILE='sresa1b_ncar_ccsm3-example.nc'
nc = netCDF4.Dataset(ncFILE,'r')
nc_var = nc.variables.keys()
print(nc_var)

結果

odict_keys(['area', 'lat', 'lat_bnds', 'lon', 'lon_bnds', 'msk_rgn', 'plev', 'pr', 'tas', 'time', 'time_bnds', 'ua'])





2.特定のキーを検索してなんらかの処理をする方法

import netCDF4

ncFILE='sresa1b_ncar_ccsm3-example.nc'
nc = netCDF4.Dataset(ncFILE,'r')
#list()で囲まないと、*1のエラーが出る。
nc_var = list(nc.variables.keys())

if 'tas' in nc_var:
print(tas + ' is exists')
#データが存在すれば、ここでなんらかの処理をする
else:
print('no data')




複数のキーを使用するときは'tas'の部分を変数にして、リストにしてループでもいいですね。




参考サイト

http://www-mete.kugi.kyoto-u.ac.jp/matsuba/python/

https://note.nkmk.me/python-dict-in-values-items/

https://github.com/taehoonlee/tensornets/issues/1 (*1)

https://github.com/taehoonlee/tensornets/commit/985bcb5444f8b9cb3457f587568ee95ce25bc683