我无法想出将非规则网格上的卫星数据转换为全球0.25 x 0.25度网格的最有效方法。
我有一个二维卫星数据阵列,以及两个相应的二维阵列,给出每个像素的纬度和经度。
当我使用pcolormesh绘图时,它看起来像这样:
m.pcolormesh(lon, lat, windSpeed)
我想将这些数据插入0.25 x 0.25 deg网格
lonGrid = arange(-180, 180, res)
latGrid = arange(-90, 90, res)
lonGrid,latGrid = meshgrid(lonGrid,latGrid)
我已经尝试过使用mpl_toolkits.basemap.interp()函数,但我无法弄清楚如何让我的lat和lon点对我单调增加,这是函数所需要的。我可以ravel()我的lon网格,将它排序为增加,然后使用argsort以相同的方式对windSpeed和lat网格进行排序......但是lat不会单调增加。
lon = lon.ravel()
lat = lat.ravel()
windSpeed = windSpeed.ravel()
lon[lon > 180] = lon[lon > 180] - 360
lonSortInds = argsort(lon)
result = mpl_toolkits.basemap.interp(windSpeed2, lon2, lat2, lonGrid, latGrid, checkbounds=False, masked=True, order=1)
lat = lat[lonSortInds]
windSpeed = windSpeed[lonSortInds]
lon = sort(lon)
result = mpl_toolkits.basemap.interp(windSpeed, lon, lat, lonGrid, latGrid, checkbounds=False, masked=False, order=1)
ValueError:xin和yin必须增加!
最好的办法是什么?
答案 0 :(得分:0)
在我刚刚遇到的类似错误中,我通过执行不同类型的重新订购来修复它。
如果您的纬度没有增加,您可以尝试:
np.flipud(lat)
np.flipud(windSpeed)
或者如果它的经度没有增加那么:
np.fliplr(lon)
np.fliplr(windSpeed)
这解决了我遇到的类似问题。