python - 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,我不记得是否需要任何额外的步骤。
解决方案
您的问题是,默认情况下,使用背景颜色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'
我也会得到一张白色的地图。希望这可以帮助。
推荐阅读
- wpf - 如何对通过 XAML 添加的 Listview 项目进行分组?
- reactjs - 如何更改对象上按钮的状态?
- anaconda - Conda 通过停用当前环境来激活环境
- laravel - 流或文件 \"/var/www/html/storage/logs/laravel.log\" 无法以附加模式打开...权限被拒绝。gcp“云运行”
- php - Office365 日历重复事件 API - 仅获取更改、更新和删除
- ssms - 是否可以在 Intellisense 框中选择多个对象?
- html - 在同一浏览器但不同操作系统中呈现不同的字体高度
- angular - 为什么 Angular http.post 方法在成功运行一定次数后不做任何事情?
- express - 拦截器中的 Nestjs 提前返回发送 [ERR_HTTP_HEADERS_SENT]
- python - 用python解析xml文件