You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cartopy绘制地图无法下载NaturalEarth数据 报名称解析失败错误

报错原因

该错误是Cartopy首次调用内置cfeature地理要素时的默认下载逻辑触发的:首次使用cfeature.COASTLINE这类内置要素时,Cartopy会自动请求Natural Earth的官方服务器下载对应精度的矢量数据,当前运行环境的网络无法正常解析目标服务器域名,导致下载失败触发报错。

解决方案
  • 方法1:手动下载离线数据放置到对应缓存目录
    提前下载好对应精度的Natural Earth数据包(你报错里需要的是110m精度海岸线文件),解压后放置到Cartopy的本地缓存路径即可:

    • Windows缓存路径:C:\Users\你的用户名\.local\share\cartopy\shapefiles\natural_earth\physical\
    • Linux/macOS缓存路径:~/.local/share/cartopy/shapefiles/natural_earth/physical/
      放置完成后重新运行原代码即可,不会再触发下载请求。
  • 方法2:为运行环境配置网络代理
    如果你有可用的代理服务,可以在代码开头添加全局代理配置,让Cartopy的下载请求走代理通道:

    import os
    # 替换为你自己的代理地址和端口
    os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
    os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'
    
    import cartopy.crs as crs
    import cartopy.feature as cfeature
    import matplotlib.pyplot as plt
    
    fig = plt.figure(figsize=(8,6))
    ax = fig.add_subplot(1,1,1, projection=crs.PlateCarree())
    ax.add_feature(cfeature.COASTLINE)
    plt.show()
    
  • 方法3:直接读取本地矢量文件替代内置要素
    如果你已经有本地的海岸线shp矢量文件,可以直接用Cartopy的接口读取本地文件添加到图上,完全绕过在线下载逻辑:

    import cartopy.crs as crs
    import matplotlib.pyplot as plt
    from cartopy.io.shapereader import Reader
    
    fig = plt.figure(figsize=(8,6))
    ax = fig.add_subplot(1,1,1, projection=crs.PlateCarree())
    # 替换为你本地的海岸线shp文件路径
    ax.add_geometries(Reader('./ne_110m_coastline.shp').geometries(), 
                      crs=crs.PlateCarree(), 
                      facecolor='none', edgecolor='black')
    plt.show()
    

内容的提问来源于stack exchange,提问作者user9364978

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:09:05