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

使用Cartopy绘制nc文件空间图出现URLError名称解析临时失败如何解决

问题原因

该报错为网络访问故障导致,与代码逻辑无关:
Cartopy调用cfeature.COASTLINE、cfeature.BORDERS、NaturalEarthFeature等内置矢量要素时,会默认从Natural Earth官方CDN下载对应资源。你当前运行环境的DNS解析失败,无法连接资源服务器,因此抛出域名解析失败报错。
之前能正常运行是因为首次运行时资源已经缓存到本地,后续若更换运行环境、清理缓存或网络策略变动,都会触发重新下载导致报错。

可行解决方案

方案1:预下载资源到本地缓存(最稳定)

提前在可正常联网的设备上下载所需的3个资源包:

  • ne_110m_coastline.zip
  • ne_110m_admin_0_boundary_lines_land.zip
  • ne_50m_admin_1_states_provinces.zip
    将资源按对应分类放到Cartopy缓存目录即可,Linux/Colab环境默认缓存路径为/root/.local/share/cartopy/shapefiles/natural_earth/,对应physical目录下放海岸线资源,cultural目录下放国界、省界资源。Cartopy检测到本地已有资源就不会触发远程下载。

方案2:直接加载本地SHP文件(无需依赖网络)

你已有本地SHP文件的情况下,直接替换内置feature加载逻辑即可,完全避开网络请求:

from cartopy.io.shapereader import Reader
from cartopy.feature import ShapelyFeature

# 替换原有cfeature.COASTLINE加载逻辑
coastline = ShapelyFeature(Reader('本地海岸线SHP文件路径').geometries(),
                            ccrs.PlateCarree(), facecolor='none', edgecolor='k')
ax.add_feature(coastline)

# 国界、省界按同样逻辑替换即可,无需调用NaturalEarthFeature

方案3:更换国内下载源(适合可联网但无法访问官方CDN的场景)

在代码最开头添加配置,将Cartopy默认下载源替换为国内镜像:

import cartopy.config
cartopy.config['downloaders']['natural_earth']['url'] = 'https://mirrors.aliyun.com/natural-earth/'
代码附带问题修复

你当前代码还存在非致命的语法问题,同步修改即可:

  • 变量名错误:你定义的选择后变量为prec_sel,后续调用时写为prec_as,统一变量名即可
  • 警告消除:将g1.ylabels_right = False改为g1.right_labels = False,g1.xlabels_top = False改为g1.top_labels = False,删除contourf的linewidths参数即可消除所有警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:03