2

これはスタック オーバーフローに関する私の最初の質問です。見落としがありましたら申し訳ありません。私は巡航位置のプロットを作成しており、北緯 60 度で二重平行線が発生しており、一方が直線 (立体投影) になっています。

これを引き起こすために私が何をしているのか誰か知っていますか?

私のプロットスクリプト(外部データを参照):

from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
import sys
import csv

dataFile = sys.argv[1]
dataStream = open(dataFile, 'rb')
dataReader = csv.reader(dataStream, delimiter=',')
numRows = sys.argv[2]

dataLat = []
dataLon = []

dataReader.next()
for row in dataReader:
    dataLon.append(float(row[5]))
    dataLat.append(float(row[6]))

m = Basemap(width=450000,height=150000,
        resolution='f',projection='stere',\
        lat_ts=65.4,lat_0=60.4,lon_0=1.91)

m.drawcoastlines(linewidth=0.2)
m.fillcontinents(color='white', lake_color='aqua')

x, y = m(dataLat,dataLon)
m.scatter(x,y,.5,marker='.',color='k')

m.drawparallels(np.arange(0.,81,1.), labels=[1,0,0,0], fontsize=10)
m.drawmeridians(np.arange(-180.,181.,5.), labels=[0,0,0,1], fontsize=10)
m.drawmapboundary(fill_color='aqua')

plt.title("Cruise Track")
plt.show()

例: プロット例

もう 1 つの小さな質問: プロットの幅/高さの単位は何ですか? ドキュメントに記載されていないようで、チュートリアルなどで言及されていません。

4

1 に答える 1

2

別のバグを修正しようとしたため、バグのようです。

私はベースマップを使用していませんが、問題を解決するための最初のステップは、問題を可能な限り減らすことです。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

scale = 1
m = Basemap(width=450000*scale,height=150000,
        resolution='i',projection='stere',
        lat_ts=65.4,lat_0=60.4,lon_0=1.91)

parallels = [60]
ret = m.drawparallels(parallels)
plt.show()

dictを返すドキュメントを見るとdrawparallels、実際のLine2D(パラレル)とそのデータポイントを復元できます。

l = ret[60][0][0]
x, y = l.get_data()

ポイントを見てみると、リンクしない限り悪くはないので、煩わしい二重平行が見えます!

plt.plot(x, y, '+')
plt.show()

+ポイント

plt.plot(x, y)
plt.show()

リンクポイント

ここで、デバッガー()を使用して小さな例を実行してみましょうpython -m pdb small_example.py

drawparallelsの呼び出しに足を踏み入れると、すぐにこのコードに到達します。見た目があまり良くないので、強調表示された行をスキップしましょう(jumpPythonデバッガーを使用したことがない場合は、を使用して、少し読んでください)。

そしてvoilà、これは結果です:

解決した問題

問題がどこにあるかを考慮すると、マップの幅または高さ(ちなみにメートル単位)を変更することで問題を解決できることは容易に推測できます。確かに、設定scale>=1.0485は機能します。幅と高さの他の組み合わせもうまくいくようです。

于 2012-10-26T18:43:10.313 に答える