ESRI 层显示在一台机器上但不显示在另一台机器上

ESRI layer showing on one machine but not another

当我在我的机器上运行下面的代码时,没有显示街道信息:

然而,当我 运行 在另一台机器上使用完全相同的代码时,地图成功加载:

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

lat_min = 39.714223
lat_max = 39.790
long_min= -105.184
long_max = -104.962

m= Basemap(llcrnrlon=long_min, llcrnrlat=lat_min, urcrnrlon=long_max, urcrnrlat=lat_max, lat_0=(lat_max - lat_min)/2, lon_0=(long_max-long_min)/2, projection='merc', epsg=4326, resolution = 'c', area_thresh=10000.,)
m.drawcoastlines()
m.drawcountries()
m.drawstates()
m.drawmapboundary()

m.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels=2000, verbose=True, zorder=1)
plt.show()

除了显示 ESRI 图层所需的安装底图之外,是否还有额外的导入步骤?几个月前,我在脚本运行的机器上安装了 Basemap,我不记得是否需要任何额外的步骤。

您的问题出在 drawmapboundary() 上,默认情况下,它用 Axes 背景色填充地图。将命令保留在外或将填充颜色设置为 'none' 将解决问题。 IE。代码:

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

lat_min = 39.714223
lat_max = 39.790
long_min= -105.184
long_max = -104.962

m= Basemap(
    llcrnrlon=long_min, llcrnrlat=lat_min,
    urcrnrlon=long_max, urcrnrlat=lat_max,
    ##lat_0=(lat_max + lat_min)/2,
    ##lon_0=(long_max+long_min)/2,
    projection='merc',
    epsg=4326,
    resolution = 'c',
    area_thresh=10000.,
)

m.drawcoastlines()
m.drawcountries()
m.drawstates()
m.drawmapboundary(fill_color='none')

m.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels=2000, verbose=True, zorder=1)
plt.show()

为我制作这张图片:

没有 fill_color='none' 我也得到一张白色地图。希望这有帮助。