Python でいくつかのポイントを指定してマップを作成したいと考えています。このために、matplotlib のBasemapを使用したいと考えています。うまく機能しますが、適切な背景マップを取得する方法がわかりません。
OSMマップをインポートするにはどうすればよいですか? または、別のマッピング パッケージを使用する必要がありますか? ラスターマップを作成してpngとして保存したいだけです。
これは私の解決策ではありません。質問者は自分の質問に答えるのに十分な評判を持っていないので、質問から貼り付けました。
私は解決策を見つけました:
imshow
Basemap 内で使用すると、png が背景画像としてプロットに含まれます。適切な背景画像を取得するために 、Basemap コンストラクターから取得した境界で OSM のエクスポート機能を使用しました。m = Basemap(llcrnrlon=7.4319, urcrnrlat=52.0632, urcrnrlon=7.848, llcrnrlat=51.8495, resolution='h', projection='merc') im = plt.imread('background.png') m.imshow(im, interpolation='lanczos', origin='upper')
NASAGIBSタイルサーバーからアクセス可能なベースマップ画像を見つけました。他のタイルサーバーにも同じ方法を使用できる場合があります。
http://earthdata.nasa.gov/wiki/main/index.php/GIBS_Supported_Clients#Script-level_access_to_imagery
ThiはPythonサブシェルでGDALのgdal_translateを使用します。
import subprocess
import matplotlib.pyplot
import mpl_toolkits.basemap
l,u,r,d=(7.4319,52.0632,7.848,51.8495)
subprocess.call ('gdal_translate -of GTiff -outsize 400 400 -projwin {l} {u} {r} {d} TERRA.xml Background.tif'.format(l=l,u=u,r=r,d=d),shell=True )
im=matplotlib.pyplot.imread('Background.tif')
m = mpl_toolkits.basemap.Basemap(llcrnrlon=l, urcrnrlat=u, urcrnrlon=r, llcrnrlat=d,
resolution='h', projection='merc')
m.imshow(im, interpolation='lanczos', origin='upper')
matplotlib.pyplot.show()
これには、上記のリンクのTERRA.xmlファイルが必要ですが、XMLをインライン化することもできます。