news 2026/8/6 8:30:21

InSAR—ASF批量下载工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
InSAR—ASF批量下载工具

ASF Sentinel-1 数据批量下载、自动分类与下载统计,附加下载地址

本文介绍一套适用于 Windows、Ubuntu 和 Docker 的 ASF Sentinel-1 数据下载软件。它可以按照数据类型、升降轨和卫星平台筛选数据,自动整理下载目录,并为下载结果生成日志和统计表。

摘要

从 ASF Vertex 导出大量 Sentinel-1 数据后,手动逐个下载、整理目录和检查完整性非常耗时。本工具可以根据 ASF CSV 中的数据类型、升降轨方向和卫星平台自动筛选并分类保存数据,同时生成下载日志与去重统计表。

本文将详细介绍:

  • 运行环境和文件准备
  • CSV 文件要求
  • SLC、RAW、GRD_HD 和元数据下载参数
  • 升轨、降轨与卫星平台的区别
  • Ubuntu、Docker 和 Windows 下的运行方法
  • 自动生成的目录、日志和统计文件
  • 已有文件、下载中断和失败文件的处理
  • 对已经下载的数据重新生成统计表
  • 常见提示与问题排查

关键词

ASFSentinel-1InSARSLCRAWGRDEarthdataDocker批量下载


一、获取软件包

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.txt

Linux 解压:

tar-xzfASF_downloader_linux_x86_64.tar.gz sha256sum-cSHA256SUMS.txtchmod+x download_slcdata generate_download_statistics

解压后的 Linux 软件包包含download_slcdatagenerate_download_statisticsSHA256SUMS.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.csv

Windows:

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_statistics

Windows 用户可以直接在 PowerShell 或命令提示符中运行.exe

2. 验证软件包(可选)

软件包中包含SHA256SUMS.txt。SHA-256 用于确认下载后的程序没有发生变化;如果程序被替换或修改,哈希值也会改变。

Linux 中计算:

sha256sum download_slcdata generate_download_statistics

Windows 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_slcSLC 影像False
bool_rawRAW 原始数据False
bool_grd_hdGRD_HD 数据False
bool_metadata_slcSLC 元数据False
bool_metadata_rawRAW 元数据False
bool_metadata_grd_hdGRD_HD 元数据False

必须至少将一个参数设置为True,否则程序会提示没有选择下载类型并退出。

例如:

bool_slc=True

只代表下载 SLC 影像,并不自动包含 SLC 元数据。如果影像和元数据都需要,应同时设置:

bool_slc=Truebool_metadata_slc=True

2. 升降轨参数: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)

satelliteorbit_direction会同时筛选。例如:

orbit_direction=ascending satellite=s1c

表示只选择 Sentinel-1C 的升轨数据。在无人值守或无法交互的环境中,应同时明确提供orbit_directionsatellite。如果satellite没有值、重复出现,或者值不是s1as1callboth,程序会显示英文错误并退出。

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=s1c

3. 只下载降轨 RAW

./download_slcdata download.csvbool_raw=Trueorbit_direction=descendingsatellite=s1a

4. 下载升轨和降轨 SLC

./download_slcdata download.csvbool_slc=Trueorbit_direction=allsatellite=all

5. 下载全部支持的数据类型

./download_slcdata download.csvbool_slc=Truebool_raw=Truebool_grd_hd=Truebool_metadata_slc=Truebool_metadata_raw=Truebool_metadata_grd_hd=Trueorbit_direction=allsatellite=all

6. Windows 示例

在 PowerShell 中进入工作目录:

cd"D:\asf_download"

运行:

.\download_slcdata.exe download.csv bool_slc=True bool_metadata_slc=True orbit_direction=ascending satellite=s1c

7. 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 SpeedPython 进程最近统计周期实际收到的数据速度
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
  • 结果说明

日志用于保留运行历史。重复运行时出现新的SKIPPEDSUCCESS记录是正常的,日志不会按 URL 去重。

2. 下载统计表

成功下载且通过文件大小校验的数据会写入:

download_statistics.csv

统计表包含产品、平台、波束、极化、轨道、Path、Frame、时间、空间位置、文件大小、耗时、平均速度、本地路径和 URL 等字段。

统计表按照 URL 去重:

  • 同一文件重复运行不会产生多条统计记录
  • 已存在的 URL 不会再次追加
  • 下载失败或大小校验不通过的文件不会进入统计表
  • 失败文件后续重下成功时,只新增这一条成功记录

因此,.log是运行历史,download_statistics.csv是成功数据清单,两者用途不同。


十、对已经下载的数据生成统计表

如果数据已经下载,但当时没有生成统计文件,可以使用:

generate_download_statistics

该程序只扫描本地文件,不连接 ASF,也不会重新下载或修改数据文件。

1. 自动识别数据集目录

如果 CSV 名称和下载时保持一致,并且当前目录结构没有改变,可以执行:

./generate_download_statistics download.csv

2. 明确指定数据集目录

如果 CSV 改过名字、数据移动过位置,或者自动识别失败,建议明确提供数据集根目录:

./generate_download_statistics download.csv /data/asf/download_YYYYMMDD_YYYYMMDD

Windows 示例:

.\generate_download_statistics.exe download.csv"D:\asf_data\download_YYYYMMDD_YYYYMMDD"

生成结果位于:

数据集根目录/download_statistics.csv

3. 如何理解扫描结果

终端可能显示:

Validated Files: 25 Missing Files: 40 Size Mismatches: 1 Invalid CSV Rows: 0

各字段含义:

结果含义
Validated Files已找到并通过大小校验、写入统计表的文件数量
Missing FilesCSV 中存在但本地没有找到的文件数量
Size Mismatches本地存在但大小与 CSV 预期值相差超过1%的文件数量
Invalid CSV RowsURL 或升降轨字段无效的 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_YYYYMMDD

Windows 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.txt

Linux、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=True

2. 为什么程序提示所有数据类型都是 False?

六个类型参数默认全部为False,必须至少明确设置一个为True

3. S1A、S1C 和升轨和降轨数据

S1A、S1C 表示 Sentinel-1A 和 Sentinel-1C 卫星平台;升轨和降轨分别使用ASCENDINGDESCENDING表示。下载时需要通过satelliteorbit_direction两个参数分别选择。

4. CSV 中没有对应类型的数据会怎样?

程序会自动跳过,不会创建虚假数据,也不会将其他类型当作目标类型下载。

5. 为什么扫描统计时有很多 Missing Files?

原始 CSV 可能包含多个类型和轨道方向,而实际只下载了其中一部分。只要Validated Files数量符合预期,缺失的未选择数据可以忽略。

6. 为什么网卡没有流量,但程序速度暂时不为零?

应用程序、容器虚拟网卡和宿主机物理网卡的统计周期不同,内核缓冲也可能造成短暂差异。当前速度按最近统计周期内程序实际收到的文件字节计算;完整停顿后会显示0.00 B/s

7. 下载统计会不会重复?

download_statistics.csv按 URL 去重,不会重复;.log用于记录每次运行历史,允许出现多次SKIPPEDSUCCESS

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=all

NFS 共享目录还可能启用root_squash,导致容器中的 root 用户无法修改由其他 UID 创建的文件权限。如果chmod返回Operation not permitted,应由文件所有者在宿主机上设置权限,或者将程序复制到容器内部可执行目录后运行。不要为了处理权限问题而对整个数据目录执行chmod -R 777


十五、推荐使用流程

建议按照以下顺序操作:

  1. 在 ASF Vertex 中检索并导出 CSV。
  2. 根据操作系统选择正确的两个可执行文件,并与 CSV 一起放在持久化工作目录中。
  3. 根据需要选择数据类型、升降轨和卫星平台参数。
  4. 运行download_slcdata
  5. 下载期间关注FAILED和速度停顿提示。
  6. 下载完成后检查.logdownload_statistics.csv
  7. 对大小不匹配的文件进行重新下载。
  8. 对旧数据或外部下载的数据运行generate_download_statistics
  9. 将原始 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 以及对应数据产品的访问和引用要求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 8:30:21

Prompt工程核心:系统、用户、助手提示词的分层协作与工程实践

你有没有遇到过这种情况:同一个大语言模型,别人用起来得心应手,能写出结构清晰的报告、生成精准的代码,而你用同样的模型,得到的回答却总是差强人意,要么答非所问,要么过于笼统? 问…

作者头像 李华
网站建设 2026/8/6 8:30:08

阿里云ECS服务器Nginx部署SSL证书实战指南

1. 项目概述:从一张SSL证书到安全站点的构建 在今天的互联网环境中,网站部署SSL证书早已不是“加分项”,而是“必选项”。无论是搜索引擎的排名权重,还是用户浏览器弹出的“不安全”警告,都在倒逼每一个网站管理者必须…

作者头像 李华
网站建设 2026/8/6 8:26:38

射频系统设计中的失配损耗与不确定性:原理、影响与工程实践

1. 项目概述:射频系统中的失配损耗与失配不确定性 在射频系统设计里,我们总在追求一件事:让信号从源头到负载,一路畅通无阻,能量能“原封不动”地传递过去。但现实很骨感,你精心设计的放大器、滤波器、天线…

作者头像 李华
网站建设 2026/8/6 8:26:14

计算机原码与补码除法详解:从恢复余数法到加减交替法

1. 从一道面试题说起:为什么我们需要原码和补码的除法? 前几天帮一个刚入行的朋友看面试题,他发来一道题:“用补码一位乘法计算x0.1010和y-0.0110的积x*y。(要求写出计算过程)”。他卡在了符号处理上。我告…

作者头像 李华
网站建设 2026/8/6 8:24:57

Gbase【安装篇】02:RedHat7.9【三节点】安装GBase 8a MPP Cluster数据库

一、安装前准备 1.1 环境信息项目信息操作系统Red Hat Enterprise Linux Server 7.9 (Maipo)数据库版本GBase 8a MPP Cluster 9.5.3.28.12安装包GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64.tar.bz2安装用户gbase安装路径/opt数据端口5258超级用户root&…

作者头像 李华
网站建设 2026/8/6 8:24:39

Unity游戏开发规模化生产:组件化、数据驱动与预制体工作流实践

1. 项目概述与核心目标看到这个标题,相信很多对《空洞骑士》这款游戏着迷,同时又对Unity引擎抱有浓厚兴趣的朋友,都会心头一热。这不仅仅是一个简单的“跟做”教程,它触及了游戏开发中一个非常关键的阶段:从核心玩法验…

作者头像 李华