# Sentinel影像批量下载器 **Repository Path**: swsk33/sentinel-fetch ## Basic Information - **Project Name**: Sentinel影像批量下载器 - **Description**: 用于批量下载Sentinel遥感影像的程序。 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-26 - **Last Updated**: 2025-02-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sentinel影像批量下载器 ## 1,介绍 用于批量下载Sentinel遥感影像的程序,使用Go实现,支持从欧空局网站批量下载Sentinel遥感影像,且下载时能够自动记录任务状态,并在中断下载后下次恢复进度。 在使用下载器时,需要先注册欧空局账户,然后才能够进行批量下载。 ## 2,创建欧空局账户 进入欧空局登录页面:[传送门](https://identity.dataspace.copernicus.eu/auth/realms/CDSE/protocol/openid-connect/auth?client_id=cdse-public&response_type=code&scope=openid&redirect_uri=https%3A//dataspace.copernicus.eu/account/confirmed/1) 点击右侧注册按钮: ![image-20241027171557156](https://swsk33-note.oss-cn-shanghai.aliyuncs.com/image-20241027171557156.png) 填写对应信息: ![image-20241027171819971](https://swsk33-note.oss-cn-shanghai.aliyuncs.com/image-20241027171819971.png) 下面部分仅勾选同意协议即可: ![image-20241027171911102](https://swsk33-note.oss-cn-shanghai.aliyuncs.com/image-20241027171911102.png) 注册完成后,会向你的邮箱发送一个验证邮件,点击验证邮件里的链接登录,即可完成新用户验证,到此整个验证流程完成。 ## 3,配置批量下载程序 解压程序后,得到的文件如下: ![image-20241027172744743](https://swsk33-note.oss-cn-shanghai.aliyuncs.com/image-20241027172744743.png) ### (1) 原始下载列表 在`fetch-list`目录中创建文本文档,并在文本文档中粘贴要下载的Sentinel影像的`identifier`即可,每行一个`identifier`,可以在该目录下存放多个文件,程序运行时会读取并解析这个文件夹中全部文件,并开始批量下载任务,相同的`identifier`会被过滤。 每个文件内容如下形式: ``` S2A_MSIL2A_20230104T030121_N0509_R032_T50TNL_20230104T063208.SAFE S2A_MSIL2A_20230104T030121_N0509_R032_T50TNK_20230104T063208.SAFE ... ``` 在[欧空局网站](https://browser.dataspace.copernicus.eu/)检索影像时,可以通过查看影像详细信息的方式获取影像的`identifier`,如下: ![image-20241215190626361](https://swsk33-note.oss-cn-shanghai.aliyuncs.com/image-20241215190626361.png) ### (2) 配置文件 在进行批量下载之前,需要对程序进行一定的配置,例如用户名密码等等,配置文件内容如下: ```yaml # 认证配置 auth: # 用户名 username: "Your Username" # 密码 password: "Your Password" # 下载配置 download: # 同时下载的文件数 parallel-count: 2 # 下载目标目录 folder: "data" # 校验下载的影像 check-file: true ``` 配置文件为[YAML形式](https://www.runoob.com/w3cnote/yaml-intro.html),可根据注释进行配置,配置意义如下: - `auth.username` 替换成你自己的欧空局网站用户名(通常是邮箱) - `auth.password` 替换成你自己的欧空局网站密码 - `download.parallel-count` 同时下载的文件个数,若出现`429`错误,建议减少该数值 - `download.folder` 遥感影像下载位置,可填写相对路径或者绝对路径,文件夹不存在会自动创建,Windows的路径反斜杠`\`请使用双斜杠`\\`表示,例如`E:\\data\\xxx` - `download.check-file` 下载完成后是否校验文件是否正确,若校验值与原本不相符,则会重新下载 由于遥感影像通常体积巨大,通常一景在`1GB`左右,因此建议配置下载路径为空间充足硬盘下或者移动硬盘里面。 完成配置后,双击`sentinel-fetch.exe`即可开始下载了!下载过程中请保证网络稳定,不要关闭终端窗口。 ### (3) 任务进度记录与恢复 通常批量下载的文件数量是很多的,并且有的时候很难保证一次性全部下载成功,因此该程序引入了下列机制: - 重试队列:如果有文件下载失败,则会重新放回任务队列,后续重试 - 进度持久化:在下载文件的同时,会定期将还没有下载完成的文件记录下来,若程序被退出,下次再启动时,不会重新读取原始下载列表文件,而是从记录的任务进度中恢复进度,继续下载 在程序运行后,会在当前目录下创建一个名为`task.json`的文件,这个文件就是**进度记录文件**: ![image-20241027174812473](https://swsk33-note.oss-cn-shanghai.aliyuncs.com/image-20241027174812473.png) 所以在影像下载完成之前,请**不要删除该文件**,若程序中途因为网络或者其它原因退出,或者被人为误操作关闭,只要`task.json`进度记录文件还在,那么再次启动时程序会读取该文件恢复下载进度(而不是读取`fetch-list`下载列表重新下载)。 如果说你想要重新开始下载任务,那就删除`task.json`再启动程序。 ### (4) 代理服务器 下载程序会从终端环境变量自动获取`http_proxy`和`https_proxy`来判断是否使用代理服务器请求,若要指定代理服务器,设定这两个环境变量即可。 Bash终端: ```bash # 设定环境变量 export http_proxy="http://127.0.0.1:1234" export https_proxy="http://127.0.0.1:1234" # 再次调用程序则会使用代理服务器 ./sentinel-fetch ``` Fish终端: ```bash # 设定环境变量 set -x http_proxy "http://127.0.0.1:1234" set -x https_proxy "http://127.0.0.1:1234" # 再次调用程序则会使用代理服务器 ./sentinel-fetch ``` cmd终端: ```bash set http_proxy=http://127.0.0.1:1234 set https_proxy=http://127.0.0.1:1234 ```