私は1500行と2000列のnetCDFファイルを持っています。それらの中には、異なる場所のデータに矛盾が含まれているものはほとんどありません。このような矛盾をNoData値で更新したいと思います。私が研究している間、変数の値をある閾値よりも上または下に更新したいと思っている多くの答えが見つかりました。例えば:以来netCDFファイルの一部を更新するには?
#------ Research-----
dset['var'][:][dset['var'][:] < 0] = -1
#-----------------
Python : Replacing Values in netcdf file using netCDF4
、不整合の値は以下に基づいて不整合を更新する、データ値と一致/一定の閾値を超えることができません。
私のアプローチ1:
ncfile = r'C:\\abcd\\55618_12.nc'
variableName = 'MAX'
fh = Dataset(ncfile, mode='r+')
for i in range(500,600,1):
for j in range(200,300,1):
fh.variables[variableName][i][j] = -99900.0 # NoData value
#--- or
#fh.variables[variableName][i:j] = -99900.0
fh.close()
アプローチ2:
fh = Dataset(ncfile, mode='r')
val = fh.variables[variableName]
for i in range(500,600,1):
for j in range(200,300,1):
val[i][j] = -99900.0
fh = Dataset(ncfile, mode='w') #(ncfile, mode='a')(ncfile, mode='r+')
fh.variables[variableName] = val
fh.close()
結果: スクリプトが正常に処理を完了します。ただし、.ncファイルを更新しないでください。
フレンド、あなたのご協力をよろしくお願い申し上げます。アプローチに続き
質問は少し不明です。塗りつぶし値に 'i = 500:600、j = 200:300'の範囲を常に設定したいですか?その場合、単に 'val [500:600,200:300] = -99900.0'を使用してください(ダブルループはありません)。そして、ファイルを 'r +'として直接開くと、2回開く必要はありません。 – Bart
応答が遅れて申し訳ありません。範囲は、ファイルごとに変わります。提供された情報が役立ちます。特にr +モード情報。ありがとう。 –