60527e935fd965802f7aedcd4978fb28d807e894
Sentinel Orbit Downloader
一个本地可用的 Sentinel-1 数据与精密轨道下载工具,支持:
- 按行政区和时间范围检索 Sentinel-1
- 下载原始 Sentinel-1 产品
- 下载匹配的精密轨道/恢复轨道
.EOF - 用 SQLite 管理项目、任务、场景和下载记录
- 通过本地 Web 页面完成日常操作
当前项目面向 Windows 本机使用场景,已经包含一键启动脚本。
当前能力
已实现:
- 行政区 GeoJSON 导入 SQLite
- 按行政区检索 Sentinel-1 场景
- 原始 Sentinel-1 产品下载
- 精密轨道
.EOF下载 - 项目管理
- 任务列表、任务详情、事件日志
- 任务删除与清空
- Earthdata 凭据本地保存
暂未实现:
- GeoTIFF /
.tif处理与导出 - 后处理流水线
也就是说,现在项目专注于“检索 + 下载原始数据 + 下载轨道”。
目录
- 项目根目录:
C:\Users\16216\Desktop\Code\sentinel-orbit-downloader - 默认数据库:
.s1dl\app.db - 默认本地数据目录:
.local-data\ - 行政区源文件:
全国行政区.geojson
环境要求
- Windows
- Python 3.11 - 3.13
uv- 网络可访问 ASF / Earthdata
快速开始
1. 一键启动
直接双击:
Start-SentinelUI.cmd
它会自动:
- 检查
uv - 执行
uv sync - 启动本地服务
- 打开浏览器
停止服务时双击:
Stop-SentinelUI.cmd
启动脚本优先尝试这些端口:
80118010801280138014
如果端口已被占用,会自动换到下一个可用端口。
2. 手动启动
cd C:\Users\16216\Desktop\Code\sentinel-orbit-downloader
uv sync
$env:S1DL_API_PORT="8011"
uv run s1-web
打开页面:
http://127.0.0.1:8011/
Swagger 文档:
http://127.0.0.1:8011/docs
首次使用流程
1. 导入行政区
项目根目录下已经放了:
全国行政区.geojson
在页面中点击:
导入行政区
也可以用命令行:
uv run s1-dl regions import
2. 创建项目
建议先建一个本地项目,例如:
- 项目名称:
牡丹江 Sentinel-1 数据 - 数据根目录:
.local-data\mudanjiang
3. 配置 Earthdata
下载原始 Sentinel-1 产品必须有 NASA Earthdata 账号。
页面中可填写:
Earthdata 用户名Earthdata 密码
然后点击:
保存凭据
保存后:
- 用户名和密码会写入本地 SQLite
- 密码不是明文保存
- 密码使用当前 Windows 用户的 DPAPI 加密
如果不想保存,也可以每次手填。
4. Earthdata 首次授权 ASF
很多第一次下载失败,不是用户名密码错,而是没有授权 ASF 应用访问 Earthdata。
如果任务日志出现类似错误:
Pre authorization required for this application
请先在浏览器登录 Earthdata,然后打开下面链接完成授权:
https://urs.earthdata.nasa.gov/approve_app?client_id=BO_n7nTIlMljdvU6kRRB3g
这是一次性的关键步骤。
5. 检索并下载
页面典型流程:
- 搜索行政区,例如
牡丹江 - 选择时间范围
- 选择产品级别,如
SLC - 点击
发起检索 - 选中任务
- 选择下载参数
- 点击
启动下载
如果只想补精密轨道,不下载原始产品:
- 把
跳过产品设为是
页面功能说明
环境配置
- 导入行政区 GeoJSON
- 查看服务状态
项目
- 创建项目
- 刷新项目列表
行政区选择
- 按名称或
adcode搜索 - 查看行政区范围框和中心点
检索参数
支持:
- 开始日期 / 结束日期
- 产品级别
- 波束模式
- 轨道方向
- 极化
- 相对轨道号
- 最大结果数
- 使用原始行政区边界
下载参数
支持:
- 数据目录
- 轨道目录
- 跳过产品
- 跳过轨道
- 并发数
- 忽略轨道失败
- Earthdata 凭据保存 / 清除
任务区
支持:
- 刷新任务
- 刷新详情
- 删除选中任务
- 清空当前项目的非运行任务
输出结构
典型输出目录如下:
.local-data\mudanjiang\
data\ # Sentinel-1 原始产品
orbits\ # AUX_POEORB / AUX_RESORB EOF 文件
manifest.csv
数据库中还会保存:
- 项目信息
- 搜索任务
- 场景清单
- 下载记录
- 任务事件日志
命令行用法
同步环境
uv sync
导入行政区
uv run s1-dl regions import
搜索行政区
uv run s1-dl regions search 牡丹江
创建项目
uv run s1-dl projects create `
--name "牡丹江 Sentinel-1 数据" `
--data-root ".local-data\mudanjiang" `
--description "Mudanjiang Sentinel-1 scenes and orbits"
按行政区检索
牡丹江市 adcode:
231000
uv run s1-dl search `
--project-id 1 `
--region-adcode 231000 `
--start 2024-01-01 `
--end 2024-03-01 `
--processing-level SLC `
--max-results 20 `
--manifest ".local-data\mudanjiang\manifest.csv"
直接下载
uv run s1-dl download `
--project-id 1 `
--region-adcode 231000 `
--start 2024-01-01 `
--end 2024-03-01 `
--processing-level SLC `
--out ".local-data\mudanjiang-run" `
--processes 2
只补轨道
uv run s1-dl orbits `
--data-dir ".local-data\mudanjiang\data" `
--out ".local-data\mudanjiang\orbits"
常见问题
1. 页面里任务全是 failed
先看任务事件日志。
常见原因有两个:
原因 A:没填 Earthdata 用户名和密码
如果下载原始 Sentinel-1 产品,必须提供 Earthdata 凭据。
解决:
- 页面填写用户名密码
- 或保存到本地配置
- 或设置环境变量
EARTHDATA_USER/EARTHDATA_PASS
原因 B:Earthdata 没授权 ASF
如果日志里有:
Pre authorization required for this application
按前文的授权链接先批准 ASF 应用。
2. 为什么检索成功,但下载失败
因为检索 ASF 元数据不一定要求完整的下载授权;真正下载原始产品时才会触发 Earthdata 登录和授权校验。
3. 只想下载轨道,不想下载原始产品
页面里把:
跳过产品
设成:
是
4. 保存 Earthdata 凭据是否明文
不是。
当前实现:
- 用户名保存在本地 SQLite
- 密码经过 Windows DPAPI 加密后保存
5. 为什么不支持 .tif
当前项目只管原始 Sentinel-1 产品和轨道文件。
还没有做:
- 解压
- 预处理
- GeoTIFF 导出
开发与维护
主要入口
- Web API:
src/sentinel_orbit_downloader/api/app.py - Web 页面:
src/sentinel_orbit_downloader/web/ - 下载管理:
src/sentinel_orbit_downloader/services/download_manager.py - 项目/任务存储:
src/sentinel_orbit_downloader/services/project_store.py - Earthdata 本地设置:
src/sentinel_orbit_downloader/services/settings_store.py
本地脚本
Start-SentinelUI.cmdStart-SentinelUI.ps1Stop-SentinelUI.cmdStop-SentinelUI.ps1
说明
这个项目当前阶段的目标很明确:
- 把“按区域检索 Sentinel-1”
- “下载原始数据”
- “下载精密轨道”
- “管理任务记录”
这四件事先稳定做好。
Languages
Python
67.9%
JavaScript
15.4%
PowerShell
6.4%
HTML
6%
CSS
4.2%
Other
0.1%