簡體   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