太平洋を中心とした南半球の地図を、python matplotlibベースマップで描いたものでプロットしたいと思います。Python Basemap:shadedrelief、bluemarbleまたはetopo(間違った経度形式ですか?)を使用しているエラー
私がベースマップルーチンshadedrelief、bluemarbleまたはetopoで背景イメージを描こうとしない限り、すべてうまくいきます。 (私はマップ上に描画したいものなし)コード次のようになります。私はm.shadedreliefのコメントを解除する場合
import numpy as np
from mpl_toolkits.basemap import Basemap
from matplotlib.backends.backend_pdf import PdfPages
latmin = -72.5
latmax = 40.
lonmin = 60.
lonmax = 370.
pp = PdfPages('datamap.pdf')
m = Basemap(projection='merc', llcrnrlat=latmin, urcrnrlat=latmax, llcrnrlon=lonmin, urcrnrlon=lonmax, resolution="c")
m.drawcoastlines(linewidth=0.25)
#m.shadedrelief()
pp.savefig()
pp.close()
()私は、次を得る:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/xyz/datamap.py in <module>()
32
---> 33 m.shadedrelief()
34
/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.pyc in shadedrelief(self, ax, scale, **kwargs)
3997 return self.warpimage(image='shadedrelief',ax=ax,scale=scale,**kwargs)
3998 else:
-> 3999 return self.warpimage(image='shadedrelief',scale=scale,**kwargs)
4000
4001 def etopo(self,ax=None,scale=None,**kwargs):
/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.pyc in warpimage(self, image, scale, **kwargs)
4115 # any range of longitudes may be plotted on a world map.
4116 self._bm_lons = \
-> 4117 np.concatenate((self._bm_lons,self._bm_lons+360),1)
4118 self._bm_rgba = \
4119 np.concatenate((self._bm_rgba,self._bm_rgba),1)
IndexError: axis 1 out of bounds [0, 1)
私が選択した場合(テスト目的のために)180度以上のすべての(シャドーリリーフを含む)より大きい経度を持たない小さなマップもうまくいきます。これは私に、経度の形式のものがここでは働いていないという前提につながります。私はいくつかのことを試しましたが、同じマップセクションをプロットしながらこれを解決する方法を見つけるように思われます。
私はマップの背景にどのように影付きぼかしを描くことができますか?
ベスト、
xilian
ありがとうございます。最新のベースマップバージョンは私が使用している自家製のリポジトリにまだありませんので、4417の__init__.pyで "1"を "0"に変更しました。 –