繁体   English   中英

在Python中将数据插值到纬度/经度网格

[英]Interpolate data to lat/lon grid in Python

我在想出将非常规网格上的卫星数据转换为全球0.25 x 0.25度网格的最有效方法时遇到了麻烦。

我有一个2D卫星数据数组,以及两个相应的2D数组,它们给出了每个像素的纬度和经度。

当我使用pcolormesh进行绘制时,它看起来像这样:

m.pcolormesh(lon, lat, windSpeed)

在此处输入图片说明

我想将此数据插值到0.25 x 0.25度网格上

lonGrid = arange(-180, 180, res)
latGrid = arange(-90, 90, res)
lonGrid,latGrid = meshgrid(lonGrid,latGrid)

我尝试弄乱mpl_toolkits.basemap.interp()函数,但无法弄清楚如何单调增加纬度和经度,这是函数所需的。 我可以将lon网格ravel()排序,将其排序以增加,然后使用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必须增加!

最好的方法是什么?

在我刚遇到的类似错误中,我通过执行其他类型的重新排序来解决了该错误。

如果您的纬度没有增加,可以尝试:

np.flipud(lat) np.flipud(windSpeed)

或如果经度没有增加,则:

np.fliplr(lon) np.fliplr(windSpeed)

这解决了我遇到的类似问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM