0

mpl_toolkits.basemap を使用してオクラホマ州の地図に気象変数をプロットしようとしていますが、データを補間して地図の上にプロットする方法を理解するのに問題があります。

私が持っている現在のコードの一般的な考え方は次のとおりです。

lons = [-97.9547, -97.9747, -97.4256]
lats = [35.5322, 35.864, 35.4111]
data = [2,2,2]
map = Basemap(llcrnrlon = -103.068237, llcrnrlat = 33.610045, urcrnrlon = -94.359076, urcrnrlat = 37.040928, resolution = 'i')  


CS = map.contour(X, Y, data)
map.drawstates()
plt.show()

私が達成しようとしているのは、経度/緯度リストの関連する参照インデックスに基づいてマップ上にデータ値をプロットし、データ変数の値を等高線化することです。

データを補間する必要があるため、これは明らかに機能しません。griddata 関数を使用してこれを達成する方法はありますか? 緯度と経度の値が直線的に配置されていないため、グリッドの境界を確立する方法について非常に混乱しています。

私が見逃しているこれを行う簡単な方法はありますか?

助けやヒントがあれば大歓迎です。これにより、研究プロジェクトの次の主要な部分に進むことができなくなります。

4

1 に答える 1

0

このマシンには python がインストールされていないため、これをテストすることはできません。しかし、このようなものは、countour プロットに必要な入力を取得する必要があります...

import numpy as np

lons = [-97.9547, -97.9747, -97.4256]
lats = [35.5322, 35.864, 35.4111]
data = [2,2,2]

xs, ys = np.meshgrid(lons, lats)

dataMesh = np.empty_like(xs)
for i, j, d in zip(lons, lats, data):
    dataMesh[lons.index(i), lats.index(j)] = d

map = Basemap(llcrnrlon = -103.068237, llcrnrlat = 33.610045, urcrnrlon = -94.359076, urcrnrlat = 37.040928, resolution = 'i')  


CS = map.contour(xs, ys, dataMesh)
map.drawstates()
plt.show()

私が言ったように、私はこれをテストしていません。単位化された値をプロットしようとするとどうなるかわかりません。別の numpy 配列の初期化を使用する必要がある場合があります。

于 2013-07-16T00:08:22.320 に答える