写在前面

好久没更新了,不是忘了,是懒!

正好最近想下载哨兵1号数据来反演一下地表形变,于是乎,就撰写此文记录一下坎坷的路程。

反演地表形变,首先得有哨兵数据,于是在 Open Access Hub (copernicus.eu) 网站上搜寻了一番,选了一些数据(此处略去)。

选的数据很多,要是一个一个点击下载,实在太过于麻烦,直觉告诉我肯定有自动批量下载的方式,于是bing了一下,果然有。

大概浏览了一下,无非就那么几种,要么是通过 https://search.asf.alaska.edu/ 这个网站上自动生成的python代码,要么就是结合 IDM 下载器,通过编写python代码下载。

第一种看起来最简单,尝试了一下,的确可以自动生成Python代码,大概长这样:

不用自己写,很方便,要下载的数据链接也可以从生成的代码上直观看到。

但是!!!最怕的但是还是来了!我尝试了很多次,都没法下载,报一个类似下面的错误:

又bing了半小时,无果。

连接不上,看来得翻墙了。果然,一翻墙,数据就开始下载了。

翻墙终归不是一个好的办法,流量有限。于是,中途抱着侥幸心理,把VPN关了,妄想还能继续下载。果然是妄想,分分钟给你断开连接!

无奈只得转向另一种下载方式了,很巧不小心看到这几篇文章https://www.tqwba.com/x_d/jishu/295307.html

【Sentinel】1. 批量下载offline数据_冰柚子的博客-CSDN博客_哨兵数据offline

按照文章上的操作,略微修改了下代码,就成功了!不用翻墙也可以顺利下载,不过前提是得安装IDM下载器。这个下载器还是挺好用的,以前只用它爬过视频,现在似乎什么都能下载,从学术论文到娱乐视频,都可以加速下载,针不戳!

要点

话不多说,贴一下下载要点,记录一下,主要代码都是上述文章里COPY过来!详细过程可以参考上述文章。

1、用Microsoft Edge浏览器,使用快捷键为ctrl+s,将网页保存下来

2、用以下代码,把网页里的文件名和下载链接存到xlsx里

#!/usr/bin/python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import pandas as pd
import requestsfilepath='scihub.copernicus.eu.html' #保存的网页,自己按照实际保存位置调整
with open(filepath,'rb') as f:ss=f.read()
soup=BeautifulSoup(ss,'html.parser') ###-------可选:获取 购物车中的数据链接------###
#获取所有id为cart-row-attributes的div标签
divfind=soup.find_all('div',id='cart-row-attributes')
###-------可选:获取 检索页面的数据链接------###
#获取所有class为'list-link selectable'的div标签
# divfind=soup.find_all('div',class_='list-link selectable')   linklist=[]
idlist=[]
for df in divfind:#获取满足条件的div下的a标签#提取a标签的内容,即为数据链接link=df.find('a').stringid=link.split('\'')[1]linklist.append(link)idlist.append(id)
linkdataframe=pd.DataFrame(linklist)
iddataframe=pd.DataFrame(idlist)
#将数据链接写出
with pd.ExcelWriter('Httpandid.xlsx') as hifile:linkdataframe.to_excel(hifile,sheet_name='HTTP',header=False,index=False)iddataframe.to_excel(hifile,sheet_name='ID',header=False,index=False)

3、使用以下代码(需要提前 pip install sentinelsat,python环境最好是3.6以上,2.7貌似报错了),结合IDM下载器,把xlsx存储的数据下载下来。IDM下载还需要简单的设置一下,就懒得截图了,参考上述文章吧!

#!/usr/bin/python
# -*- coding: utf-8 -*-from subprocess import call
from sentinelsat import SentinelAPI
from datetime import date
import time
import xlrd
from tqdm import tqdmIDM = "E:\Program Files\Internet Download Manager\IDMan.exe" #你电脑中IDM的位置
DownPath='Sentinel_offline/' #数据要下载的地址
api = SentinelAPI('username', 'password', 'https://scihub.copernicus.eu/dhus') #填写用户名和密码
#用于读取数据的HTTP链接到列表中
filepath='Httpandid.xlsx'
workbook = xlrd.open_workbook(filepath)
sheet1 = workbook.sheet_by_name('HTTP')
linklist=sheet1.col_values(0)
#开始下载
print('开始任务:..................')
n=0
while linklist:print('---------------------------------------------------')n=n+1print('\n')print('第'+str(n)+'次循环'+'\n\n')id=linklist[0].split('\'')[1]link=linklist[0]product_info=api.get_product_odata(id)print('检查当列表里的第一个数据:')print('数据ID为:'+id)print('数据文件名为:'+product_info['title']+'\n')if product_info['Online']:print(product_info['title']+'为:online产品')print('加入IDM下载: '+link)call([IDM, '/d',link, '/p',DownPath,'/n','/a'])linklist.remove(link)call([IDM,'/s'])else:print(product_info['title']+'为:offline产品')print('去激活它')api.download(id)     #去激活它print('检查任务列表里是否存在online产品: .........')#等待激活成功的时候,检查现在的列表里还有没有online产品#如果有online的产品那就下载#首先检查列表中是否需要下载的数据if len(linklist)>1:#记录列表里可以下载的链接,并在最后把它们删除ilist=[]#开始寻找列表剩下的元素是否有online产品for i in range(1,len(linklist)):id2=linklist[i].split('\'')[1]link2=linklist[i]product_info2=api.get_product_odata(id2)if product_info2['Online']:print(product_info2['title']+'为在线产品')print('ID号为:'+id2)print('加入IDM下载: '+link2)print('--------------------------------------------')call([IDM, '/d',link2, '/p',DownPath,'/n','/a'])#在列表中加入需要删除产品的HTTP链接信息#直接在linklist中删除会linklist的长度会发生改变,最终造成i的值超过linklist的长度ilist.append(link2)else:continue#把已经下载的数据的链接给删除掉if len(ilist)>0:call([IDM,'/s'])for il in ilist:linklist.remove(il)print('本轮次检查结束,开始等到40分钟')#将该激活的产品删除,再加入到最后linklist.remove(link)linklist.append(link)#两次激活offline数据的间隔要大于30分钟for i in tqdm(range(int(1200)),ncols=100):time.sleep(2)

可能出现的问题

1、使用不同的浏览器,网页里面的内容可能会有差别,可能需要做相应的修改,需要注意;

2、如果下载的offline数据过多的话,可能要不断进行激活,貌似一个账户一次能够激活的offline数据有限(20个?),超过这个数,可能会报错!

3、不激活offline数据,直接下载在线数据的话,就在把代码中 else 后面的内容注释掉,增加一句 linklist.remove(link) 把offline数据给移掉就行了。

4、其他问题,暂时没发现!

使用Python批量下载哨兵1号数据相关推荐

  1. 使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据(precise orbit data)

    使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据 1. 安装Python及data_downloader包 2. 下载精密轨道数据与辅助数据 1. 安装Python及data_d ...

  2. Google Earth Engine(GEE)批量下载哨兵1号数据

    今天来简单分享下如何在GEE中批量下载哨兵1号数据 数据介绍: 数据源为COPERNICUS/S1_GRD,是SAR数据. 可能的组合是单波段 VV 或 HH,以及双波段 VV+VH 和 HH+HV: ...

  3. 用Python批量下载DACC的MODIS数据

    本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...

  4. 如何下载哨兵1号数据

    如何下载哨兵1号数据(Sentinel1) 下载网站:https://vertex.daac.asf.alaska.edu/ 准备:谷歌浏览器.IDM Step1:注册账号 Step2:选择下载的数据 ...

  5. python批量下载ECMWF欧洲中心数据

    ECMWF欧洲中心提供的api只能根据单时间下载,我稍微改动了一下,可以根据时间进行批量下载.详细步骤如下: 1.注册账户获得key. 网址: https://cds.climate.copernic ...

  6. Google earth engine 下载哨兵二号数据

    文章目录 上传ROI 加载ROI 运行任务 导入到谷歌云盘 上传ROI 加载ROI var district = ee.FeatureCollection("users/hammesbrid ...

  7. Sentinel-2 (哨兵2号) 数据批量下载教程 [python]

    Sentinel-2 [哨兵2号] 数据批量下载教程 [python] 1. 选择数据 2. 数据下载 2.1 下载链接文件 2.2 安装Python及data_downloader包 2.3 创建. ...

  8. 利用python下载哨兵1号轨道数据

    python下载哨兵一号轨道数据 最近因为项目需要,突然想起来自己曾写过这么一份脚本,就顺便修改了一下.首先明确一下我们的目标,根据已经下载的哨兵1号影像文件,下载哨兵1号对应的精密轨道数据.哨兵轨道 ...

  9. 批量下载哨兵(Sentinel)数据

    由于网络的原因,现在下载哨兵数据很难,直接在国外网站上下载,需要科学上网.某宝上虽然也提供下载哨兵数据的服务,但是价格太贵了,因此在网上找了很久,发现了一个非常非常实用的工具Internet Down ...

  10. python批量下载数据|工具箱

    现在很多数据提供HTTPServer下载服务,在这里介绍一种普遍适用的利用URL批量下载数据的python方法 前言 很多数据支持FTP下载,也提供OPeNDAP方式下载.两者的差异是显而易见的: ( ...

最新文章

  1. CSS 相对|绝对(relative/absolute)定位系列(一)
  2. redis setnx 过期时间_阿里面试官:你确定你用过 Redis 分布式锁吗?
  3. 撒花!吴恩达《Machine Learning Yearning》中文版新鲜出炉!
  4. linux需要的GLIBCXX版本,GCC版本中没有GLIBCXX_3.4.15解决
  5. 【可视化】seaborn常用的10种数据分析图表
  6. Swift数据类型_整型和浮点型
  7. oracle数据库imp导入,imp 导入 没有数据库
  8. 最小生成树模板 加 例题分析 (最小生成树类型汇总)
  9. Unity-Xlua
  10. 神来之笔-线程变量实践
  11. 【优秀课设】基于OpenCV+MediaPipe的手势识别(数字、石头剪刀布等手势识别)
  12. STM32 CAN总线故障检测功能的使用
  13. 符号“|=”是什么意思?
  14. php和c#短信接口,C#代码示例_短信接口 | 微米-中国领先的短信彩信接口平台服务商...
  15. 【评测】小鼠肝细胞系(GHA1、AML12、BNL CL.2)培养实验操作步骤
  16. Spark商业实战三部曲源码地址
  17. sql中以sa命名的用户名无法使用,错误码1845
  18. 人工智能领域期刊总结
  19. 配置电脑使Wireshark能抓到有VLAN标签的报文
  20. git commit 报错fatal: unable to access

热门文章

  1. conda cudnn版本升级_Ubuntu16.04深度学习环境+个人桌面配置(CUDA10.1 + cudnn8.0.4 + pytorch1.7)...
  2. 用JEP+SpringBoot进行动态公式处理计算
  3. Eclipse汉化教程2021新版
  4. VAssistX 脚本
  5. Windows Embedded 7 最简便EWF系统制作方案
  6. java ojdbc6_JAVA JDBC在连接ORACLE数据库时出现ojdbc6.jar has no source 问题?
  7. HI3518E 中Sample Venc分析
  8. Matlab入门1(有手就行)
  9. selenium+ocr 破解验证码
  10. 黑客入侵电脑网络四大步骤全面曝光