在Python中使用Basemap重新划分3D卫星数据时出错,2D有效

2024-09-30 10:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下问题:

我有来自不同卫星的云量数据集,我想把它们重新整理到气候模型的网格上,以便将模型输出和观测到的卫星数据进行比较。在

目前,我使用的是basemap中的interp函数,它对于1 x经度x纬度的数组非常适用,但对于形状为nx经度x纬度的数组则不适用。重新研磨这类三维阵列的最佳方法是什么?在

from mpl_toolkits.basemap import interp
import xarray as xr 
def regrid_MAR10km(x_in,y_in,data_in): 
    mar_10km = xr.open_dataset('/media/..../MAR_10km /MARv3.5.2-10km-ERA-2008.nc')
    lat = mar_10km['LAT']
    lon = mar_10km['LON']
    result = interp(data_in, x_in, y_in,lon,lat)
    return result  

我的问题是,当我尝试使用三维数据时,我会收到以下形式的错误消息,在我的例子中,数组的形式是161(这是每个月的云量!)x长x横向

^{pr2}$

这就是它产生的错误:

 IndexError                                Traceback (most recent call   last)
<ipython-input-19-5117a62e570e> in <module>()
----> 1 cloud_regrid =      fc.regrid_MAR10km(longitude,latitude,cloud_data_UD)

/media/sf_Shared/Black_and_bloom/CODE/functions.py in regrid_MAR10km(x_in, y_in, data_in)
 20         lat = mar_10km['LAT']
 21         lon = mar_10km['LON']
---> 22         result = interp(data_in, x_in, y_in,lon,lat)
 23         return result

/home/sh16450/miniconda3/envs/snowflakes/lib/python3.5/site-packages/mpl_toolkits/basemap/__init__.py in interp(datain, xin, yin, xout, yout,  checkbounds, masked, order)
4958         dataout = (1.-delx)*(1.-dely)*datain[yi,xi] + \
4959                   delx*dely*datain[yip1,xip1] + \
-> 4960                   (1.-delx)*dely*datain[yip1,xi] + \
4961                   delx*(1.-dely)*datain[yi,xip1]
4962     elif order == 0:

IndexError: index 41 is out of bounds for axis 1 with size 28

Tags: 数据indata数组resultmarlonbasemap
1条回答
网友
1楼 · 发布于 2024-09-30 10:30:30

Basemap docs开始,interp方法专门处理二维数组,其中第一个维度对应于y维度(纬度),第二个维度对应于x维度(经度)。如果你再给它点什么,恐怕你最后会得不到好结果。在

实际上,由于Basemap假设您的数据是二维的,所以它试图在时间轴和纬度轴(161,28)上执行插值,就好像它们分别是经纬度一样。由于传递给该方法的经度数组(110,)现在比axis Basemap假定的经度(28,)大,最终会出现形状不匹配,从而导致索引器错误。在

我不太清楚为什么(1,28110)会起作用,但我敢打赌,NumPy在隐藏层中做了一些数组flatteningsqueezing,最终基本上忽略了这个空维度。在

我建议迭代每个时间步并在二维数据片上执行插值,或者搜索scipy.interpolate文档,看看它们是否提供了一个函数来执行您所要查找的功能。在

祝你好运!在

相关问题 更多 >

    热门问题