gpt4 book ai didi

Python basemap : Error using shadedrelief, bluemarble 或 etopo(假经度格式?)

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:06 34 4
gpt4 key购买 nike

我想绘制以太平洋为中心的南半球 map ,并使用 python matplotlib basemap 在上面绘制一些内容。

一切正常,除非我尝试使用 basemap 例程 shadedrelief、bluemarble 或 etopo 绘制背景图像。代码(没有我想在 map 上绘制的东西)如下所示:

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()

当我取消注释 m.shadedrelief() 时,我得到以下信息:

---------------------------------------------------------------------------
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 度的较小 map 时,一切(包括阴影浮雕)都可以正常工作。这让我假设经度格式的东西在这里不起作用。我尝试了一些东西,但我似乎无法找到一种方法来解决这个问题,同时仍然绘制相同的 map 部分

您知道我如何在我的 map 背景中绘制阴影浮雕吗?

最好的,

西联

最佳答案

basemap /init 代码中似乎存在错误。事实上,如果你查看 github 上的最新版本 [参见 https://github.com/matplotlib/basemap/blob/master/lib/mpl_toolkits/basemap/init.py#L4139以及它与错误的第 4117 行有何不同] 你会发现这个错误已经解决了。这意味着您可以:

# np.concatenate((self._bm_lons,self._bm_lons+360),1)
np.concatenate((self._bm_lons,self._bm_lons+360))

init.py 代码中或获取较新版本的 basemap 。两者中的任何一个都可以解决您的问题。

关于Python basemap : Error using shadedrelief, bluemarble 或 etopo(假经度格式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243506/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com