3

緯度と経度が関連付けられたデータセットをマッピングしようとしています。私が使用しているデータの詳細は以下のとおりです。

Variable   Type       Data/Info
-------------------------------
lat    ndarray    1826x960, type `float64`
lon    ndarray    1826x960, type `float64`
data   ndarray    1826x960, type `float64`

次にベースマップを作成しました:

m = Basemap(projection='cyl', llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-40, urcrnrlat=40, resolution='c')

次に、作成したベースマップに、pcolormesh を使用して上記のデータセットをプロットします。

m.drawcoastlines()
m.drawcountries
x,y = m(lon,lat)
m.pcolormesh(x,y,data)
m.colorbar()
plt.show()

これにより、次の図が得られます 。Temp Brightness plot

しかし、データセット (サイズ 2691x960、経度と緯度も同様) で同様のプロットを実行すると、経度範囲全体 (-180 から 180) をカバーすると、「奇妙なバー」が表示されます: 奇妙なバー

データセットの重複により、奇妙なバーが発生することは間違いありません。同じプロットが matlab で実行されており、かなりうまく機能します。

問題が何であるか、バーを削除するために何ができるか、Python でこの種のデータをプロットする他の方法は何か教えてください。

4

2 に答える 2

1

私が少し前に遭遇した問題にあなたは遭遇していると思います。ここでの問題は、ベースマップがポリゴンを作成しようとすると、本初子午線を正しく処理していないように見える内挿法を使用することです。プライムマリディアンを実際に横切るピクセルは、世界中に広がるポリゴンに補間されます。

私が使用した解決策は、ファイルを2つのマスクされた配列に分割する(または元の配列を異なる時間に2つの異なる方法でマスクする)、1つは東半球をマスクし、もう1つは西半球をマスクしてから両方をにマップすることです。同じAxesオブジェクト。

編集:別の解決策は、経度の境界を-179.99から179.99または同様のものにすることです。

于 2012-09-17T19:18:11.607 に答える
0

私はこの問題を解決するために何もしていませんが、 mpl_toolkit.basemap.addcyclicメソッドを使用して、同様のサウンドの問題に対する解決策がここで提供されているようです。

ドキュメントから:

arrout, lonsout = addcyclic(arrin, lonsin)は経度の巡回 (ラップアラウンド) ポイントを および に追加しarrinlonsin経度が の右端の次元であると仮定しarrinます。

于 2014-03-27T21:20:44.910 に答える