如何更新 netCDF 文件的一部分?

地理信息系统学习者

我有 1500 行和 2000 列的 netCDF 文件。其中很少有不同位置的数据不一致。我想用 NoData 值更新这种不一致。在研究过程中,我发现了许多答案,其中人们希望更新高于/低于某个阈值的变量值。例如:

#------ Research-----

dset['var'][:][dset['var'][:] < 0] = -1

#-----------------

Python:使用 netCDF4 替换 netcdf 文件中的值

由于不一致的值与数据值匹配,因此不可能基于低于/高于某个阈值来更新不一致。

我的方法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()

方法二:

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 文件。

朋友们,非常感谢您的帮助。

地理信息系统学习者

以下方法对我有用:

import netCDF4 as nc
import numpy as np

ncfile   =   r'C:\\abcd\\55618_12.nc'
variableName =  'MAX'

fh = nc.Dataset(ncfile, mode='r')
val = fh.variables[variableName][:]
fh.close()

print type (val)

for i in range(500,600,1):
    for j in range(200,300,1):
        #print i,j
        val[i][j] = -99900.0
        if val[i][j]> -99900.0:
            print val[i][j]


fh = nc.Dataset(ncfile, mode='r+')
fh.variables[variableName][:]= val
fh.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章