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

时间:2018-06-25 21:47:10

标签: python matplotlib-basemap

当我在计算机上运行以下代码时,没有显示街道信息:

empty map

但是,当我在另一台机器上运行完全相同的代码时,地图会成功加​​载:

correct map

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的,我不记得是否需要任何其他步骤。

1 个答案:

答案 0 :(得分:0)

您的问题在于drawmapboundary(),默认情况下,该地图会用Axes背景色填充地图。忽略该命令或将填充颜色设置为'none'将解决此问题。即代码:

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

为我制作这张图片:

result of the above code

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