USGS批量下载Landsat5-8影像步骤(包括使用espa工具,遇到的错误-解决办法)

类似的下载步骤很多人写过了,这里放2个链接仅供参考,介绍得很全面:

从USGS批量下载L2级Landsat-4/5/7/8影像_landsat4-5怎么打开_yynjupt0713的博客-CSDN博客

批量下载Landsat遥感影像的方法_landsat遥感影像下载_盈梓的博客小站的博客-CSDN博客

在EarthExplorer查询网站提交订单后,导出元数据(将订单信息做成产品名称列表),将查询结果导出为csv文件,然后把产品名称一列(第一列)另存为txt文本文件(删去首行标题),在ESPA - LSRD提交这个文本订单并下载。

点击New Order菜单进入提交产品列表页面,可以将数据转换为自己需要的投影和分辨率(本人选择了地理投影+GEOTIFF格式)。更多处理选项里面还可以下载反射率产品和NDVI等指数(不同遥感数据能额外计算的指标不一样)。

本人的经验:不能选择input和地表温度,选择了会报错;实际下载的landsat TM 和Landsat OLI影像只能计算光谱指数,该选项可以下载,这里我选了NDVI。

 

 

 

 

 

大概12小时,两个订单处理完成,接下来介绍使用python工具批量下载遇到的问题。

工具下载官网:bulk-downloader

 

可参考以下链接:

espa-bulk-downloader-master批量下载usgs python_biubibiubi的博客-CSDN博客

ESPA网站中Landsat C2L2数据批量下载网站报错问题500 Internal Server Error_空中旋转篮球的博客-CSDN博客

python版本需要3.6及以上,cmd界面打开python所在目录,把bulk-downloader-develop这个解压的文件夹复制过去,输入以下代码:

download_espa_order.py -e 邮箱 -o order ID -d E:\temp\landsat_tm(要下载到的文件夹) -u 用户名 -p 密码

Order ID是一长串字符,espa-*******-数字

运行过程中我先后遇到两个错误,都是在download_espa_order.py里进行修改解决的。

第一个是SSL证书报错

error: httpsconnectionpool(host='espa.cr.usgs.gov', port=443): max retries exceeded with url

参考:爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路_自学AI的鲨鱼儿的博客-CSDN博客

解决方案:关闭 SSL 验证,增加一句 verify=False,如下所示

response = requests.get(self.host+uri, json=data, headers=self.headers,
                                auth=self.creds, verify=False)

第二个是requests警告,

InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

参考:

requests 警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verif_落凡尘.的博客-CSDN博客

在urllib3时代,官方强制验证https的安全证书,如果没有通过是不能通过请求的,虽然添加忽略验证的参数,但是依然会给出醒目的 Warning

即在程序开始部分添加代码:

requests.packages.urllib3.disable_warnings()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Google Earth Engine (GEE) 对Landsat-8多幅影像进行批量地形校正的代码示例: ```javascript // Load Landsat 8 surface reflectance data. var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') .filterDate('2019-01-01', '2019-12-31') .filterBounds(geometry) .select(['B4', 'B3', 'B2', 'B5', 'B6', 'B7']); // Function to apply terrain correction to a single image. var applyTerrainCorrection = function(image) { // Load elevation data. var elevation = ee.Image('USGS/SRTMGL1_003'); // Compute terrain correction parameters. var tc = ee.Terrain.hillShadow(elevation, image.metadata('sunAzimuth'), image.metadata('sunElevation')); // Apply terrain correction to the image. var corrected = image.addBands(tc.select(['hillshade'])); return corrected; }; // Apply terrain correction to the image collection. var correctedCollection = collection.map(applyTerrainCorrection); // Export the corrected images to Google Drive. Export.image.toDrive({ image: correctedCollection, description: 'Landsat8_terrain_corrected', folder: 'GEE_exports', scale: 30, region: geometry }); ``` 在上述代码中,我们首先加载了Landsat 8表面反射率数据,并使用`filterDate()`和`filterBounds()`函数对数据进行筛选。然后,我们定义了一个名为`applyTerrainCorrection`的函数,该函数接受一个影像作为输入,并返回已进行地形校正的影像。在函数中,我们加载了SRTM高程数据,并使用`ee.Terrain.hillShadow()`函数计算了地形校正参数。最后,我们将地形校正应用到了影像中,并使用`addBands()`函数将地形校正参数作为新波段添加到了影像中。 接下来,我们使用`map()`函数将`applyTerrainCorrection`函数应用到整个影像集合中,并将结果存储在名为`correctedCollection`的变量中。最后,我们使用`Export.image.toDrive()`函数将地形校正后的影像导出到Google Drive中。 需要注意的是,上述代码中的`geometry`变量需要根据实际情况进行设置,以指定影像的空间范围。此外,如果需要,还可以调整`scale`参数以控制导出影像的空间分辨率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值