使用Cartopy加载NaturalEarth英国国界遇404错误,求正确name参数及数据列表
解决Cartopy加载英国地区边界的问题
一、正确的name参数值
你尝试的admin_0_map_units其实是正确的name值,报错大概率是Cartopy自动下载数据时的网络问题,或是你错误添加了_lines后缀(该图层为多边形要素,并非线要素)。以下是修正后的可运行代码:
import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.feature as cfeature # 创建UTM投影坐标轴 ax = plt.axes(projection=ccrs.UTM(zone=30, southern_hemisphere=False)) # 加载10m级admin_0 map units图层(英国各地区边界) uk_regions = cfeature.NaturalEarthFeature( category='cultural', name='admin_0_map_units', scale='10m', facecolor='none', edgecolor='gray', linewidth=1 ) ax.add_feature(uk_regions) # 聚焦英国区域,避免显示全球范围 ax.set_extent([-8, 2, 49, 59], crs=ccrs.PlateCarree()) plt.show()
如果仍出现HTTPError,建议手动下载数据:
- 下载NaturalEarth的
ne_10m_admin_0_map_units.zip压缩包 - 解压后将shp相关文件放到Cartopy默认数据目录(通常为
~/.local/share/cartopy/shapefiles/natural_earth/cultural/10m_admin_0_map_units/),或在NaturalEarthFeature中添加data_dir参数指定本地文件路径。
二、获取可用的name字符串方法
- 从NaturalEarth文件命名推导:所有数据的shp文件命名格式为
ne_<比例尺>_<name>.shp,其中<name>就是需传入NaturalEarthFeature的name参数。比如ne_10m_admin_1_states_provinces.shp对应的name是admin_1_states_provinces。 - 查看Cartopy本地数据目录:Cartopy下载的NaturalEarth数据会按
category/scale/name结构存储,直接查看对应目录的文件夹名称即可得到可用的name。 - Cartopy内置快捷feature:常用的边界、国家等已封装在
cartopy.feature中,比如cfeature.COUNTRIES对应国家边界,cfeature.STATES对应州/省边界,可直接调用无需指定name。
内容的提问来源于stack exchange,提问作者PetGriffin
相关产品推荐
相关产品推荐

