即使海岸线或其他参考数据仍需下载,地图也可以在本地生成。如果 Cartopy 找不到所需的资源,标准 Downloader 可以在绘图结束前把它取回。

该下载器使用 Python 的 urllib.request.urlopen。对于同时服务两种目标方案的 HTTP 正向代理,请用如下环境启动绘图进程:

export http_proxy=http://proxy.example:8080
export https_proxy=http://proxy.example:8080

代理必须位于实际 Python 进程所继承的环境中。已经在运行的笔记本内核或桌面 IDE 可能需要自己的启动配置。在 Jupyter 中,请在获取数据之前配置所选内核的启动环境。HTTPS 变量中仍然可以填写 HTTP 代理地址。公共参考数据下载在该路由被允许且未配置代理账号的情况下,可以使用HTTP 代理列表中的一个 HTTP 条目。

请查看下载警告或异常中请求的数据 URL。数据资源缺失、代理质询和 HTTPS 信任失败出现在不同环节;更改投影并不会修复下载器的网络路由。

对于应当保持离线的机器

提前准备好所需数据集,并让 Cartopy 指向其根目录:

from pathlib import Path
import cartopy

cartopy.config['pre_existing_data_dir'] = Path('/srv/map-data')

该目录需要具备相应下载器所期望的布局,包括完整的数据集文件。一个放着任意压缩包的文件夹并不会自动成为 Cartopy 查找的资源路径。

会先检查 pre_existing_data_dir,再检查 data_dir。如果两处都没有该资源,可下载的条目仍然会触发向 data_dir 的获取,而该目录必须可写。因此设置预先存在的目录只是一种查找选择,并不是「永不使用网络」的全局开关。

请为计划中的绘图准备所需的每一种分辨率和要素。此前成功的粗略地图并不能证明更精细的海岸线已经可用。瓦片服务和自定义下载器可能有各自的获取方式。

相关文章