ASF Sentinel-1 数据批量下载、自动分类与下载统计,附加下载地址
本文介绍一套适用于 Windows、Ubuntu 和 Docker 的 ASF Sentinel-1 数据下载软件。它可以按照数据类型、升降轨和卫星平台筛选数据,自动整理下载目录,并为下载结果生成日志和统计表。
摘要
从 ASF Vertex 导出大量 Sentinel-1 数据后,手动逐个下载、整理目录和检查完整性非常耗时。本工具可以根据 ASF CSV 中的数据类型、升降轨方向和卫星平台自动筛选并分类保存数据,同时生成下载日志与去重统计表。
本文将详细介绍:
- 运行环境和文件准备
- CSV 文件要求
- SLC、RAW、GRD_HD 和元数据下载参数
- 升轨、降轨与卫星平台的区别
- Ubuntu、Docker 和 Windows 下的运行方法
- 自动生成的目录、日志和统计文件
- 已有文件、下载中断和失败文件的处理
- 对已经下载的数据重新生成统计表
- 常见提示与问题排查
关键词
ASF、Sentinel-1、InSAR、SLC、RAW、GRD、Earthdata、Docker、批量下载
一、获取软件包
https://github.com/kdqSoldier/insar-asf-downloader/releases/tag/v1.0
**软件包下载地
GitHub项目
https://github.com/kdqSoldier/insar-asf-downloader/releases/tag/v1.0
百度网盘(会员不限速)
https://pan.baidu.com/s/1Zuo-MeMIfbeKHVf2j8AXFw
提取码:s7hs
夸克网盘(会员不限速)
https://pan.quark.cn/s/6394b80f9b29
提取码:7PLJ链接如失效(文件缺失)可留言或 kongdeqianght@163.com 😕
压缩软件包:
| 操作系统 | 软件包文件 |
|---|---|
| Windows 64位 | ASF_downloader_windows_x86_64.zip |
| Linux 64位 | ASF_downloader_linux_x86_64.tar.gz |
两个程序的用途如下:
| 程序 | 用途 |
|---|---|
download_slcdata | 读取 ASF CSV、筛选数据、下载文件、自动分类、写入日志和下载统计 |
generate_download_statistics | 扫描已经下载的数据,根据原始 ASF CSV 重新生成统计表,不执行网络下载 |
Windows 用户应使用.exe文件;Ubuntu、常见 Linux 服务器和基于 glibc 的 Docker 容器应使用 Linux 文件。Linux 软件面向 x86_64 架构,不适用于 ARM64,也不建议直接用于 Alpine Linux 的 musl 环境。
Windows 用户使用系统自带的“全部解压缩”功能解压 ZIP,不要直接在 ZIP 预览窗口中运行程序。解压后包含:
download_slcdata.exe generate_download_statistics.exe SHA256SUMS.txtLinux 解压:
tar-xzfASF_downloader_linux_x86_64.tar.gz sha256sum-cSHA256SUMS.txtchmod+x download_slcdata generate_download_statistics解压后的 Linux 软件包包含download_slcdata、generate_download_statistics和SHA256SUMS.txt。如果校验成功,终端会对两个程序分别显示OK。
Linux 可执行权限可能在通过 FTP、SMB、NFS、Windows 文件系统或部分网页上传工具传输后丢失。如果执行程序时看到:
bash: ./download_slcdata: Permission denied先查看文件权限:
ls-ldownload_slcdata generate_download_statistics如果权限开头类似-rw-rw-rw-,说明没有执行权限。执行:
chmod755download_slcdata generate_download_statistics正常权限应类似:
-rwxr-xr-x不要使用bash download_slcdata,因为它是 Linux 二进制程序,不是 Shell 程序。
建议将对应系统的两个可执行文件和 ASF CSV 放在同一个工作目录中。
Linux:
asf_download/ ├── download_slcdata ├── generate_download_statistics └── download.csvWindows:
asf_download\ ├── download_slcdata.exe ├── generate_download_statistics.exe └── download.csv本文统一把 ASF 导出的 CSV 命名为:
download.csv实际使用其他文件名也可以,但命令和生成的数据集目录名称会随之改变。此文件可以直接使用“search.asf.alaska.edu”导出的CSV表单文件,不需修改。
二、运行环境
1. 不需要安装 Python
软件包基于 Python 开发,但已经制作成单文件可执行程序。普通用户不需要安装 Python、pip、Conda 或第三方库。
Linux 首次使用时需要增加执行权限:
chmod+x download_slcdata generate_download_statisticsWindows 用户可以直接在 PowerShell 或命令提示符中运行.exe。
2. 验证软件包(可选)
软件包中包含SHA256SUMS.txt。SHA-256 用于确认下载后的程序没有发生变化;如果程序被替换或修改,哈希值也会改变。
Linux 中计算:
sha256sum download_slcdata generate_download_statisticsWindows PowerShell 中计算:
Get-FileHash.\download_slcdata.exe-Algorithm SHA256Get-FileHash.\generate_download_statistics.exe-Algorithm SHA256将结果与SHA256SUMS.txt逐项比较。只要有一个字符不同,就不要继续运行,应重新从可信来源下载软件包。
SHA-256 的作用是检测文件是否发生变化,不是数字签名。Windows 可能对没有商业代码签名证书的软件显示 SmartScreen 提醒。不要直接关闭系统安全功能,应先确认软件来源和 SHA-256,再决定是否运行。
3. Earthdata 账号
下载 ASF 数据需要有效的 NASA Earthdata 账号,并确保账号已经具备对应数据的访问权限、接受所需的使用协议。
运行下载程序时,终端会要求输入用户名和密码:
Username: Password (will not be displayed):输入密码时终端不显示字符,这是正常的安全行为。
程序不会把用户名、密码或登录 Cookie 写入日志。登录 Cookie 只在当前程序进程的内存中使用,程序退出后不会继续复用。
三、准备 ASF CSV
在 ASF Vertex 中完成数据检索后,导出包含下载 URL 和元数据的 CSV,并将其放入程序工作目录。软件可以直接读取 Vertex 导出的 CSV,不需要手动修改表头或内容。
为了正常筛选、分类和统计,CSV 至少需要包含以下字段:
| 字段 | 用途 |
|---|---|
URL | 下载地址和本地文件名来源 |
Processing Level | 区分 SLC、RAW、GRD_HD 和元数据类型 |
Ascending or Descending? | 区分升轨和降轨 |
Acquisition Date | 生成数据集日期范围目录 |
如果 CSV 还包含下列字段,生成的统计表会更加完整:
- Granule Name
- Platform
- Sensor
- Beam Mode
- Orbit
- Path Number
- Frame Number
- Acquisition Date、Start Time、End Time
- 中心点和四角经纬度
- Size (MB)
- TemporalBaseline、PerpendicularBaseline
- Burst 和 Subswath 相关字段
建议始终保留 ASF 原始 CSV。即使数据已经下载完成,后续重新生成统计表仍然需要它。
四、下载参数
1. 数据类型参数
程序提供六个布尔参数,默认值全部为False:
| 参数 | 对应数据 | 默认值 |
|---|---|---|
bool_slc | SLC 影像 | False |
bool_raw | RAW 原始数据 | False |
bool_grd_hd | GRD_HD 数据 | False |
bool_metadata_slc | SLC 元数据 | False |
bool_metadata_raw | RAW 元数据 | False |
bool_metadata_grd_hd | GRD_HD 元数据 | False |
必须至少将一个参数设置为True,否则程序会提示没有选择下载类型并退出。
例如:
bool_slc=True只代表下载 SLC 影像,并不自动包含 SLC 元数据。如果影像和元数据都需要,应同时设置:
bool_slc=Truebool_metadata_slc=True2. 升降轨参数:orbit_direction
使用orbit_direction参数选择轨道方向:
| 参数 | 含义 |
|---|---|
orbit_direction=ascending | 只下载升轨数据 |
orbit_direction=descending | 只下载降轨数据 |
orbit_direction=all | 同时下载升轨和降轨数据 |
如果不传入该参数,程序会在控制台询问:
[1] ASCENDING [2] DESCENDING [3] ALL参数名称和值不区分大小写。orbit_direction=both也表示同时选择升轨和降轨,但建议统一使用all。
在无人值守、Docker 后台任务或无法交互的环境中,应明确传入orbit_direction。参数缺少值、重复出现或使用非法值时,程序会显示英文错误并退出。
3. 卫星平台参数:satellite
使用satellite参数选择平台:
| 参数 | 含义 |
|---|---|
satellite=s1a | 只下载 Sentinel-1A |
satellite=s1c | 只下载 Sentinel-1C |
satellite=all | 同时下载 Sentinel-1A 和 Sentinel-1C |
参数名称和值不区分大小写。satellite=both也可以表示两个平台,但建议统一使用all。
如果没有提供该参数,程序会询问:
[1] S1A (Sentinel-1A only) [2] S1C (Sentinel-1C only) [3] ALL (both Sentinel-1A and Sentinel-1C)satellite与orbit_direction会同时筛选。例如:
orbit_direction=ascending satellite=s1c表示只选择 Sentinel-1C 的升轨数据。在无人值守或无法交互的环境中,应同时明确提供orbit_direction和satellite。如果satellite没有值、重复出现,或者值不是s1a、s1c、all、both,程序会显示英文错误并退出。
4. 卫星平台与升降轨的区别
需要特别注意:
S1A表示 Sentinel-1A 卫星平台S1C表示 Sentinel-1C 卫星平台ASCENDING表示升轨DESCENDING表示降轨
卫星平台与轨道方向是两个独立的筛选条件。Sentinel-1A 和 Sentinel-1C 都可能包含升轨或降轨数据。例如,satellite=s1a orbit_direction=descending表示只选择 Sentinel-1A 的降轨数据。
五、常用下载命令
以下命令均假设当前目录中存在:
download_slcdata download.csv下面第1至第5个示例使用 Linux 写法。Windows 用户将./download_slcdata替换为.\download_slcdata.exe,后面的 CSV 和参数保持不变。
1. 只下载升轨 SLC
./download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=s1a该命令不会下载 RAW、GRD_HD 或 SLC 元数据。
2. 下载升轨 SLC 和对应元数据
./download_slcdata download.csvbool_slc=Truebool_metadata_slc=Trueorbit_direction=ascendingsatellite=s1c3. 只下载降轨 RAW
./download_slcdata download.csvbool_raw=Trueorbit_direction=descendingsatellite=s1a4. 下载升轨和降轨 SLC
./download_slcdata download.csvbool_slc=Trueorbit_direction=allsatellite=all5. 下载全部支持的数据类型
./download_slcdata download.csvbool_slc=Truebool_raw=Truebool_grd_hd=Truebool_metadata_slc=Truebool_metadata_raw=Truebool_metadata_grd_hd=Trueorbit_direction=allsatellite=all6. Windows 示例
在 PowerShell 中进入工作目录:
cd"D:\asf_download"运行:
.\download_slcdata.exe download.csv bool_slc=True bool_metadata_slc=True orbit_direction=ascending satellite=s1c7. Docker 示例
假设宿主机数据目录挂载到容器的/downloads:
cd/downloads ./download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=s1a为了保证容器删除后数据仍然保留,应将可执行文件、CSV 和下载目录放在宿主机绑定挂载或持久化卷中。Linux 可执行文件依赖 glibc 环境;如果容器使用 Alpine Linux,建议改用 Ubuntu 或 Debian 基础镜像。
六、自动生成的目录结构
程序会根据以下信息创建最外层数据集目录:
CSV 主文件名 + 最早获取日期 + 最晚获取日期例如,输入文件为download.csv,CSV 中包含一段日期范围的数据,可能生成:
download_YYYYMMDD_YYYYMMDD/如果 CSV 中只有一个获取日期,则可能生成:
download_YYYYMMDD/数据集内部按照以下三级目录分类:
数据类型 / 升降轨 / 卫星平台 / 数据文件完整示意:
download_YYYYMMDD_YYYYMMDD/ ├── README.md ├── download.log ├── download_statistics.csv ├── SLC/ │ ├── ASCENDING/ │ │ ├── S1A/ │ │ └── S1C/ │ └── DESCENDING/ │ ├── S1A/ │ └── S1C/ ├── RAW/ └── METADATA_SLC/这种结构避免不同年份、类型、轨道方向和卫星平台的数据全部堆放在同一个目录中。
七、终端进度、速度和预计时间
下载开始后,终端会使用英文显示类似信息:
Download Plan Files: 10 Total Size: 40.00 GB Estimated Total Time: Calculating... (3/10) Downloading https://... > File 3/10 | Current File: 850.00 MB / 4.00 GB (20.75%) | Current Speed: 12.00 MB/s | File ETA: 4m 30s | Total ETA: 45m 0s字段含义:
| 字段 | 含义 |
|---|---|
File 3/10 | 当前是第3个文件,共10个文件 |
Current File | 当前文件已接收容量、总容量和完成百分比 |
Current Speed | Python 进程最近统计周期实际收到的数据速度 |
File ETA | 当前文件预计剩余时间 |
Total ETA | 全部剩余任务预计时间 |
速度会自动选择 B/s、KB/s、MB/s 或 GB/s,不会强制使用过大的单位。
如果最近一个统计周期没有收到新数据,速度会显示:
Current Speed: 0.00 B/s程序显示的是 Python 应用层收到的有效文件数据,不等同于系统网卡、Docker 虚拟网卡或宿主机物理网卡显示的总流量。TLS、HTTP 头、网络重传、缓存和统计时间窗口都可能造成数值差异。
ETA 是动态估算值,会随着网络速度、认证等待、服务器响应和重试情况变化。
八、已有文件如何处理
如果目标位置已经存在同名文件,程序不会直接覆盖,而会显示本地大小、远程大小及差异,并给出选项:
[1] Skip [2] Overwrite [3] Skip all [4] Overwrite all [5] Quit含义如下:
| 选项 | 作用 |
|---|---|
Skip | 跳过当前文件 |
Overwrite | 重新下载并替换当前文件 |
Skip all | 本次运行中跳过后续所有已有同名文件 |
Overwrite all | 本次运行中覆盖后续所有已有同名文件 |
Quit | 退出程序 |
程序等待输入时会倒计时15秒。如果没有输入,默认选择Skip,避免意外覆盖数据。
重新下载时,新内容会先写入临时文件,完整下载后再替换目标文件,降低下载中断损坏原文件的风险。
九、下载日志与统计表的区别
1. 下载日志
数据集根目录中会生成与源 CSV 同主文件名的.log文件,例如:
download.log日志记录每一次处理事件,包括:
SUCCESS:下载成功FAILED:下载失败或大小校验失败SKIPPED:已有文件被跳过- 数据类型、升降轨和卫星平台
- 实际大小和预期大小
- 下载耗时
- 本地文件路径
- 下载 URL
- 结果说明
日志用于保留运行历史。重复运行时出现新的SKIPPED或SUCCESS记录是正常的,日志不会按 URL 去重。
2. 下载统计表
成功下载且通过文件大小校验的数据会写入:
download_statistics.csv统计表包含产品、平台、波束、极化、轨道、Path、Frame、时间、空间位置、文件大小、耗时、平均速度、本地路径和 URL 等字段。
统计表按照 URL 去重:
- 同一文件重复运行不会产生多条统计记录
- 已存在的 URL 不会再次追加
- 下载失败或大小校验不通过的文件不会进入统计表
- 失败文件后续重下成功时,只新增这一条成功记录
因此,.log是运行历史,download_statistics.csv是成功数据清单,两者用途不同。
十、对已经下载的数据生成统计表
如果数据已经下载,但当时没有生成统计文件,可以使用:
generate_download_statistics该程序只扫描本地文件,不连接 ASF,也不会重新下载或修改数据文件。
1. 自动识别数据集目录
如果 CSV 名称和下载时保持一致,并且当前目录结构没有改变,可以执行:
./generate_download_statistics download.csv2. 明确指定数据集目录
如果 CSV 改过名字、数据移动过位置,或者自动识别失败,建议明确提供数据集根目录:
./generate_download_statistics download.csv /data/asf/download_YYYYMMDD_YYYYMMDDWindows 示例:
.\generate_download_statistics.exe download.csv"D:\asf_data\download_YYYYMMDD_YYYYMMDD"生成结果位于:
数据集根目录/download_statistics.csv3. 如何理解扫描结果
终端可能显示:
Validated Files: 25 Missing Files: 40 Size Mismatches: 1 Invalid CSV Rows: 0各字段含义:
| 结果 | 含义 |
|---|---|
Validated Files | 已找到并通过大小校验、写入统计表的文件数量 |
Missing Files | CSV 中存在但本地没有找到的文件数量 |
Size Mismatches | 本地存在但大小与 CSV 预期值相差超过1%的文件数量 |
Invalid CSV Rows | URL 或升降轨字段无效的 CSV 行数 |
Missing Files不一定代表程序出错。例如,只选择下载了升轨 SLC,而原始 CSV 还包含降轨、RAW 或其他类型时,未选择的数据都会显示为缺失并自动跳过。
大小不匹配的文件通常是不完整下载,不会进入统计表。建议保留或重命名该文件,然后通过下载程序重新下载。
事后扫描无法还原真实下载耗时和当时速度,因此新补录行的这两个字段会留空。如果统计表中已经保存了下载时的真实耗时和速度,重新扫描时会保留原值。
十一、失败文件如何重新下载
如果日志中出现:
FAILED,...,Download failed or file size validation did not pass.说明下载未完成或大小校验没有通过。
建议先把不完整文件改名保留:
mv/data/asf/download_YYYYMMDD_YYYYMMDD/SLC/ASCENDING/S1A/example.zip\/data/asf/download_YYYYMMDD_YYYYMMDD/SLC/ASCENDING/S1A/example.zip.incomplete然后使用原 CSV、原工作目录和相同筛选参数重新运行:
./download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=s1a遇到完整的已有文件时,可以选择:
[3] Skip all程序会跳过已有文件,并补下载当前筛选范围内缺失的数据。重新下载成功后:
- 日志会追加一条
SUCCESS - 统计表会增加该文件的成功记录
- 已经统计过的 URL 不会重复
确认新文件完整以后,再决定是否删除.incomplete备份。
十二、检查统计表是否有重复 URL
程序写入download_statistics.csv时会自动按 URL 去重。最简单的整理方法是再次运行独立统计程序,它会重新扫描有效文件并生成去重后的统计表:
./generate_download_statistics download.csv /data/asf/download_YYYYMMDD_YYYYMMDDWindows PowerShell 用户还可以检查重复 URL:
$rows=Import-Csv"D:\asf_data\download_YYYYMMDD_YYYYMMDD\download_statistics.csv"$duplicates=$rows|Group-ObjectURL|Where-ObjectCount-gt1"Statistics rows:$($rows.Count)""Duplicate URLs:$($duplicates.Count)"正常情况下,Duplicate URLs应为0。这里不需要安装 Python。
十三、Cookie 与账号安全
当前下载程序不会持久化 Earthdata 登录 Cookie。
旧版本 ASF 批量下载程序可能在用户主目录留下:
.bulk_download_cookiejar.txtLinux、Ubuntu 或 Docker 中检查:
ls-l"$HOME/.bulk_download_cookiejar.txt"删除:
rm-f"$HOME/.bulk_download_cookiejar.txt"Windows PowerShell 中检查:
Test-Path-LiteralPath"$env:USERPROFILE\.bulk_download_cookiejar.txt"删除:
Remove-Item-LiteralPath"$env:USERPROFILE\.bulk_download_cookiejar.txt"-Force-ErrorAction SilentlyContinue当前程序启动时也会检查这个旧文件并尝试删除;即使因为权限不足无法删除,也不会读取或复用它。
十四、常见问题
1. 为什么只设置bool_slc=True没有下载元数据?
SLC 影像和 SLC 元数据是两个独立类型。需要同时设置:
bool_slc=Truebool_metadata_slc=True2. 为什么程序提示所有数据类型都是 False?
六个类型参数默认全部为False,必须至少明确设置一个为True。
3. S1A、S1C 和升轨和降轨数据
S1A、S1C 表示 Sentinel-1A 和 Sentinel-1C 卫星平台;升轨和降轨分别使用ASCENDING、DESCENDING表示。下载时需要通过satellite和orbit_direction两个参数分别选择。
4. CSV 中没有对应类型的数据会怎样?
程序会自动跳过,不会创建虚假数据,也不会将其他类型当作目标类型下载。
5. 为什么扫描统计时有很多 Missing Files?
原始 CSV 可能包含多个类型和轨道方向,而实际只下载了其中一部分。只要Validated Files数量符合预期,缺失的未选择数据可以忽略。
6. 为什么网卡没有流量,但程序速度暂时不为零?
应用程序、容器虚拟网卡和宿主机物理网卡的统计周期不同,内核缓冲也可能造成短暂差异。当前速度按最近统计周期内程序实际收到的文件字节计算;完整停顿后会显示0.00 B/s。
7. 下载统计会不会重复?
download_statistics.csv按 URL 去重,不会重复;.log用于记录每次运行历史,允许出现多次SKIPPED或SUCCESS。
8. 程序是否支持断点续传?
当前版本不支持从不完整文件的末尾继续下载。发现不完整文件时,应保留或改名,然后重新下载完整文件。
9. 是否应该使用--insecure?
正常情况下不应该。只有确认下载来源可信、但环境中确实存在 SSL 证书验证问题时才考虑:
./download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=s1a--insecure该参数会关闭 SSL 证书校验,会降低连接安全性。
10. Linux 为什么提示Permission denied?
先设置执行权限:
chmod755./download_slcdata ./generate_download_statistics然后重新运行,例如:
./download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=all如果设置权限后仍然提示Permission denied,检查当前目录所在的文件系统是否使用了noexec挂载选项:
findmnt-T./download_slcdata-oTARGET,FSTYPE,OPTIONS如果输出中包含noexec,即使文件带有x权限,也不能从该目录直接执行。可以把程序复制到容器或系统中允许执行的位置,再从数据目录调用:
cp./download_slcdata /tmp/download_slcdatachmod755/tmp/download_slcdata /tmp/download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=all程序仍会在当前工作目录中读取 CSV 和创建数据集目录。如果使用相对路径,应先进入 CSV 所在目录:
cd/data/asf /tmp/download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=allNFS 共享目录还可能启用root_squash,导致容器中的 root 用户无法修改由其他 UID 创建的文件权限。如果chmod返回Operation not permitted,应由文件所有者在宿主机上设置权限,或者将程序复制到容器内部可执行目录后运行。不要为了处理权限问题而对整个数据目录执行chmod -R 777。
十五、推荐使用流程
建议按照以下顺序操作:
- 在 ASF Vertex 中检索并导出 CSV。
- 根据操作系统选择正确的两个可执行文件,并与 CSV 一起放在持久化工作目录中。
- 根据需要选择数据类型、升降轨和卫星平台参数。
- 运行
download_slcdata。 - 下载期间关注
FAILED和速度停顿提示。 - 下载完成后检查
.log和download_statistics.csv。 - 对大小不匹配的文件进行重新下载。
- 对旧数据或外部下载的数据运行
generate_download_statistics。 - 将原始 CSV、数据集 README、日志和统计表一起归档。
十六、完整下载示例
下面以“下载 CSV 中所有 Sentinel-1A 和 Sentinel-1C 的升轨 SLC 数据”为例,完整演示一次运行过程。程序会按照 CSV 中的顺序逐个处理文件:已有文件根据用户选择跳过或覆盖,本地缺失的文件继续下载。
为保护账号和数据隐私,以下截图使用重新制作的脱敏示例。用户名、目录、日期、产品名、URL 和容量均为演示内容,但操作流程与实际程序一致。
第1步:准备 ASF CSV
在 ASF Vertex 中完成检索并导出 CSV。不要使用 Excel 删除列、修改表头或重新排列 URL;将原始 CSV 与程序放在同一工作目录即可。
假设 Linux 工作目录如下:
/data/asf/ ├── download_slcdata ├── generate_download_statistics └── download.csv首次使用时增加执行权限:
cd/data/asfchmod755download_slcdata generate_download_statistics第2步:运行下载命令
执行:
./download_slcdata download.csvbool_slc=Trueorbit_direction=ascendingsatellite=all这条命令表示:
bool_slc=True:只选择 SLC 影像orbit_direction=ascending:只选择升轨satellite=all:同时选择 Sentinel-1A 和 Sentinel-1C
如果只需要 Sentinel-1C,将最后一个参数改为:
satellite=s1c第3步:完成 Earthdata 认证并确认下载计划
程序读取 CSV 后会显示数据集 README 路径、匹配文件数量,并要求输入 Earthdata 用户名和密码。密码输入时不会显示字符。
认证通过后,Download Plan会显示:
- 本次匹配的文件数量
- CSV 中可以计算出的总容量
- 历史平均速度(存在历史日志时)
- 预计总下载时间
用户名、密码和 Cookie 不会保存到磁盘;认证仅对当前程序进程有效。
第4步:处理已经存在的文件
如果目标目录中已经存在同名文件,程序会显示本地大小、远程大小、修改时间和 ETag,然后等待选择:
示例中输入了3,代表:
Skip all它会在本次运行中跳过后续所有已经存在的同名文件。需要注意:
Skip all只作用于已经存在的文件- 本地不存在的匹配文件仍会正常下载
- 15秒内没有输入时,默认只跳过当前文件
- 文件大小一致不代表内容哈希一定一致
如果确认需要重新下载当前文件,可以选择2 Overwrite;如果希望覆盖后续全部已有文件,可以选择4 Overwrite all。
第5步:程序依次跳过已有文件
选择Skip all后,程序不再逐个询问,而是自动对后续已有文件应用相同选择:
终端中的Applying previous choice to all existing files: skip表示批量跳过策略已经生效。每个跳过事件都会立即写入数据集日志,状态为SKIPPED。
第6步:下载本地缺失的数据
当程序遇到本地不存在的匹配文件时,会开始实际下载,并持续显示当前文件进度、实时速度、当前文件 ETA 和全部任务 ETA:
示例进度:
File 4/8 Current File: 1.26 GB / 4.10 GB (30.73%) Current Speed: 12.56 MB/s File ETA: 3m 52s Total ETA: 18m 40s每个文件成功下载并通过大小校验后,会立即写入日志和download_statistics.csv,不需要等待全部任务结束。
第7步:查看下载摘要
全部文件处理完成后,程序显示成功、失败、跳过数量、平均速度和总耗时:
示例中:
- 1个本地缺失文件下载成功
- 3个已有文件被跳过
- 没有显示在成功列表中的跳过文件不会重复写入统计表
.log仍会保留本次运行产生的SKIPPED历史记录
第8步:检查生成结果
查看数据集目录:
find/data/asf/download_YYYYMMDD_YYYYMMDD-maxdepth4-typef|sort典型结果包括:
download_YYYYMMDD_YYYYMMDD/ ├── README.md ├── download.log ├── download_statistics.csv └── SLC/ └── ASCENDING/ ├── S1A/ └── S1C/如果数据是以前下载的,或者统计表需要重新生成,可以执行:
./generate_download_statistics download.csv /data/asf/download_YYYYMMDD_YYYYMMDD程序只会把存在且通过大小校验的文件写入统计表。Missing Files表示 CSV 中存在但本地没有找到的数据,Size Mismatches表示本地文件大小与 CSV 预期值不一致;这两类文件都会被自动排除。
结语
这套工具适合需要批量下载和整理 ASF Sentinel-1 数据的场景。下载程序负责筛选、认证、分类、日志和实时统计,独立统计程序负责对已经存在的数据进行校验和汇总。通过保留原始 ASF CSV、下载日志和去重统计表,可以更容易地检查数据完整性并管理不同类型、轨道方向、卫星平台和时间范围的数据集。
使用公开数据时,请同时遵守 NASA Earthdata、ASF 以及对应数据产品的访问和引用要求。