首页 > 解决方案 > ESRI 层显示在一台机器上而不是另一台机器上

问题描述

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

空地图

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

正确的地图

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

标签: pythonmatplotlib-basemap

解决方案


您的问题是,默认情况下,使用背景颜色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()

为我生成此图像:

上述代码的结果

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


推荐阅读