[英]grid point interpolation of wrf data to lat lon in python with numpy and scipy
[英]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.