在python中将netcdf数据重新划分为更精细的分辨率

在python中将netcdf数据重新划分为更精细的分辨率,python,netcdf,Python,Netcdf,我想通过创建新的更精细分辨率的网格单元,将netcdf数据的分辨率从0.5度降到0.25度(或更低),这些网格单元的值与更粗糙分辨率的网格单元的值相同。我有福勒。用于创建较粗分辨率文件的代码: from mpl_toolkits.basemap import Basemap from netCDF4 import Dataset import numpy as np import pdb filename = '/Users/r/global_aug4.region.nc' pdb.set_t

我想通过创建新的更精细分辨率的网格单元,将netcdf数据的分辨率从0.5度降到0.25度(或更低),这些网格单元的值与更粗糙分辨率的网格单元的值相同。我有福勒。用于创建较粗分辨率文件的代码:

from mpl_toolkits.basemap import Basemap
from netCDF4 import Dataset
import numpy as np
import pdb

filename = '/Users/r/global_aug4.region.nc'
pdb.set_trace()
with Dataset(filename, mode='r') as fh:
   lons = fh.variables['lon'][:]
   lats = fh.variables['lat'][:]
   biom = fh.variables['biomass'][:].squeeze()

lons_sub, lats_sub = np.meshgrid(lons[::4], lats[::4])

coarse = Basemap.interp(biom, lons, lats, lons_sub, lats_sub, order=1)
如何创建另一种方式,即从粗到细的比例

注意,您只需要为
interp
方法提供
xout
yout
,这是新的所需网格

您已经使用较粗的网格(即,通过以4度的步长增加坐标)正确地完成了此操作,现在您只需通过将
lons_sub
lats_sub
重新定义为网格间距,以0.25度的增量进行。像下面这样的方法应该可以奏效

lats_fine = np.arange(lats[0], lats[-1], 0.25) # 0.25 degree fine grid
lons_fine = np.arange(lons[0], lons[-1], 0.25)
lons_sub, lats_sub = np.meshgrid(lons_fine, lats_fine)
请注意,在中,您只需要为
interp
方法提供
xout
yout
,这是新的所需网格

您已经使用较粗的网格(即,通过以4度的步长增加坐标)正确地完成了此操作,现在您只需通过将
lons_sub
lats_sub
重新定义为网格间距,以0.25度的增量进行。像下面这样的方法应该可以奏效

lats_fine = np.arange(lats[0], lats[-1], 0.25) # 0.25 degree fine grid
lons_fine = np.arange(lons[0], lons[-1], 0.25)
lons_sub, lats_sub = np.meshgrid(lons_fine, lats_fine)
请注意,在中,您只需要为
interp
方法提供
xout
yout
,这是新的所需网格

您已经使用较粗的网格(即,通过以4度的步长增加坐标)正确地完成了此操作,现在您只需通过将
lons_sub
lats_sub
重新定义为网格间距,以0.25度的增量进行。像下面这样的方法应该可以奏效

lats_fine = np.arange(lats[0], lats[-1], 0.25) # 0.25 degree fine grid
lons_fine = np.arange(lons[0], lons[-1], 0.25)
lons_sub, lats_sub = np.meshgrid(lons_fine, lats_fine)
请注意,在中,您只需要为
interp
方法提供
xout
yout
,这是新的所需网格

您已经使用较粗的网格(即,通过以4度的步长增加坐标)正确地完成了此操作,现在您只需通过将
lons_sub
lats_sub
重新定义为网格间距,以0.25度的增量进行。像下面这样的方法应该可以奏效

lats_fine = np.arange(lats[0], lats[-1], 0.25) # 0.25 degree fine grid
lons_fine = np.arange(lons[0], lons[-1], 0.25)
lons_sub, lats_sub = np.meshgrid(lons_fine, lats_fine)