SatNav 卫星场景下载
SatSim 使用 59 个 GeoTIFF 场景。可以选择下载已准备好的场景,或使用自己的地图服务 API 凭据,通过 SatNav 脚本生成场景。
获取方式 |
步骤 |
|---|---|
方式一:下载现成场景 |
在 SatNav-Scenes-v0.1 填写申请表并同意使用条款,申请通过系统检查后下载 |
方式二:通过 API 生成 |
注册 Google Map Tiles API 或 Mapbox,配置凭据后运行地图下载脚本 |
场景范围定义在 Episodes 数据集的 scenes_list.yaml 中,见 Episode 数据下载。GeoTIFF 如何生成 RGB observation,见 SatSim 观测原理。
方式一:申请并下载现成场景
打开 SatNav-Scenes-v0.1,登录 Hugging Face,填写姓名、机构、机构邮箱和研究用途,勾选声明并提交。申请通过系统检查后,该账号将获得下载权限。
使用同一账号登录命令行,在 SatNav 仓库根目录下载场景和校验清单(共 64.79 GB):
pip install -U huggingface_hub
hf auth login
hf download Eku127/SatNav-Scenes-v0.1 --repo-type dataset \
--include "scenes/*.tif" --include SHA256SUMS \
--local-dir "$PWD/data/satnav_datasets"
设置数据路径,并校验下载的 GeoTIFF:
export SATNAV_DATA_ROOT="$PWD/data/satnav_datasets/SatNav-v0.1"
export SATNAV_SCENES_DIR="$PWD/data/satnav_datasets/scenes"
(cd "$PWD/data/satnav_datasets" && sha256sum -c SHA256SUMS)
完成后直接进入下方“校验数据配置”。
方式二:使用自己的 API 凭据生成场景
1. 准备环境
先完成环境安装,然后在 SatNav 仓库根目录安装 applications 依赖并设置数据路径:
python -m pip install -e '.[applications]'
export SATNAV_DATA_ROOT="$PWD/data/satnav_datasets/SatNav-v0.1"
export SATNAV_SCENES_DIR="$PWD/data/satnav_datasets/scenes"
mkdir -p "$SATNAV_SCENES_DIR"
如数据位于其他磁盘,请将环境变量改为对应的绝对路径。
2. 配置服务凭据
选择实际使用的服务商。Google Map Tiles API 支持按场景清单批量生成;Mapbox 支持单场景生成。
Google Map Tiles API
创建或选择已启用结算的 Google Cloud 项目。
启用 Map Tiles API。
在凭据页面创建 API key。
将 key 限制为仅可访问 Map Tiles API;条件允许时,再限制可信 IP。
export GOOGLE_MAPS_API_KEY="your-api-key"
参考 Google 官方配置指南。
Mapbox
创建 Mapbox 账户。
在 Access Tokens 页面创建 token。
仅授予读取地图瓦片所需的最小权限,例如
styles:tiles。
export MAPBOX_ACCESS_TOKEN="your-access-token"
参考 Mapbox token 文档。不要将真实凭据写入脚本或提交到 Git。
3. 批量生成 59 个场景
--scene-config 批量模式目前仅支持 Google。请先执行 dry run,检查场景配置和输出路径;该命令不会下载瓦片:
python -m applications.map_downloader google \
--scene-config "$SATNAV_DATA_ROOT/scenes_list.yaml" \
--output-dir "$SATNAV_SCENES_DIR" \
--dry-run
确认无误后开始下载:
python -m applications.map_downloader google \
--scene-config "$SATNAV_DATA_ROOT/scenes_list.yaml" \
--output-dir "$SATNAV_SCENES_DIR"
已有 GeoTIFF 默认会被跳过,因此中断后可直接重新执行同一命令。常用选项包括:
--scene-id Geneva-1:只处理指定场景,可重复传入。--limit 2:只处理配置中的前两个场景。--overwrite:重新生成已有文件。--max-workers N:设置并行下载数量。--use-env-proxy:使用系统代理环境变量。
下载前请确认 API 配额、费用和可用磁盘空间。
4. 下载单个场景
Google 和 Mapbox 均支持单场景下载。以下示例使用两个 WGS84 角点定义区域:
python -m applications.map_downloader google \
--type corners \
--lat1 46.161791698085 --lon1 6.082932204008 \
--lat2 46.179030896969 --lon2 6.116151362658 \
--zoom 19 \
--output "$SATNAV_SCENES_DIR/Geneva-1.tif"
使用 Mapbox 时,将子命令 google 改为 mapbox,其余范围参数保持不变。也可以通过 --type center 配合 --center-lat、--center-lon、--height-m 和 --width-m,按中心点和实际尺寸定义区域。
SatNav 场景使用 zoom level 19。下载器默认保留服务商要求的 attribution;Mapbox 还会生成对应的 .attribution.txt 文件。
5. 校验数据配置
完成下载后,在仓库根目录运行:
bash scripts/validation/data_validation.sh
脚本会检查:
GeoTIFF 文件数量是否为 59;
train、val_seen 和 val_unseen 的 Episode 数量;
Episode 数据能否正常加载;
所有 Episode 引用的场景是否存在。
校验通过后,终端会输出:
SatNav data configuration is complete.
6. 常见问题
为什么运行下载命令时出现 ModuleNotFoundError?
在 SatNav 仓库根目录为当前环境安装 applications 依赖:
python -m pip install -e '.[applications]'
为什么 API 鉴权失败?
确认凭据环境变量已经在当前终端生效,并检查对应 API 是否启用、账号结算状态、key 使用 限制和 token scope。不要将 key 或 token 写入仓库配置。
下载中断后如何继续?
重新执行相同命令即可续传。不要添加 --overwrite,否则已经完成的场景也会重新下载。
为什么无法连接 tile.googleapis.com?
如果当前网络需要代理,添加 --use-env-proxy,让下载器读取终端中的代理环境变量后重试。
为什么 Google satellite tiles 不可用?
除配额和区域覆盖外,绑定 EEA 账单地址的项目无法获取 2D satellite tiles。根据命令返回的 错误码检查 Google 错误说明。
7. 数据来源与使用条款
现成场景的申请和使用条件见 SatNav-Scenes-v0.1。通过 API 获取影像时,使用自己的账号凭据,并按服务商协议确定存储和研究使用范围。服务文档:Google Map Tiles API 政策、计费说明、Mapbox Raster Tiles API。
场景准备完成后,可使用 SatSim Viewer检查 GeoTIFF,或按照轨迹数据生成生成离线训练数据。