![](/img/trans.png)
[英]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.