netcdf4 提取经纬度子集

2023-12-24

我想提取一个相当大的 netcdf 文件的空间子集。从循环遍历 netcdf 文件并运行计算 - Python 或 R https://stackoverflow.com/questions/18665078/loop-through-netcdf-files-and-run-calculations-python-or-r

from pylab import *
import netCDF4

f = netCDF4.MFDataset('/usgs/data2/rsignell/models/ncep/narr/air.2m.1989.nc')
# print variables
f.variables.keys()
atemp = f.variables['air'] # TODO: extract spatial subset

如何仅提取与某个州(例如爱荷华州)相对应的 netcdf 文件的子集。爱荷华州有以下边界纬度:

经度: 西经 89° 5' 至西经 96° 31'

纬度:北纬 40° 36' 至北纬 43° 30'


嗯,这很简单,您必须找到纬度和经度的上限和下限的索引。 您可以通过查找最接近您要查找的值来完成此操作。

latbounds = [ 40 , 43 ]
lonbounds = [ -96 , -89 ] # degrees east ? 
lats = f.variables['latitude'][:] 
lons = f.variables['longitude'][:]

# latitude lower and upper index
latli = np.argmin( np.abs( lats - latbounds[0] ) )
latui = np.argmin( np.abs( lats - latbounds[1] ) ) 

# longitude lower and upper index
lonli = np.argmin( np.abs( lons - lonbounds[0] ) )
lonui = np.argmin( np.abs( lons - lonbounds[1] ) )  

然后只需对变量数组进行子集化即可。

# Air (time, latitude, longitude) 
airSubset = f.variables['air'][ : , latli:latui , lonli:lonui ] 
  • 注意,我假设经度维度变量以东度为单位,空气变量具有时间、纬度、经度维度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

netcdf4 提取经纬度子集 的相关文章

随机推荐