批量下载modis数据(上)

关键词:modis,Python,批量下载,requests,json

一幅一幅下载modis影像是真的折磨人,不得不自己另辟蹊径。

话不多说,直接步入正题,如何通过Python批量下载modis影像。

以下载006版本-MOD11A1产品-瓦片h25v05-2010年影像为例,依次输入上述筛选条件,可检索到如下结果,登录后可进行手动下载。

点击下载第一幅影像,其下载链接为https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MOD11A1/2010/001/MOD11A1.A2010001.h25v05.006.2016025150452.hdf,不难发现下载链接由5部分组成:

  1. https://ladsweb.modaps.eosdis.nasa.gov/archive/allData

  2. 版本号 6

  3. 年份 2010

  4. 积日 001

  5. 影像文件名

目前,已知下载链接中的1,2,3,只需获得5,便可通过切片得到4,最后组合就得到完整的下载链接。

那如何得到每个影像的文件名呢?

打开开发者工具,切换到网络,刷新页面,答案即将揭晓……

右图中逐个name对应的就是左边的filename,也就是我们所需的影像文件名。那如何获得右边的这堆数据呢?

切换至标头,请求网址:https://ladsweb.modaps.eosdis.nasa.gov/api/v1/files/product=MOD11A1&collection=6&dateRanges=2010-01-01..2010-12-31&areaOfInterest=x80.46y40.06,x103.93y30.05&dayCoverage=true&dnboundCoverage=true

访问该网址便可获得上图右边那堆数据,同样进行网址拆分,由6部分组成:

  1. https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MOD11A1/2010/001/MOD11A1.A2010001.h25v05.006.2016025150452.hdf

  2. 产品 product=MOD11A1

  3. 版本 collection=6

  4. 时间序列 dateRanges=2010-01-01..2010-12-31

  5. 感兴趣区 areaOfInterest=x80.46y40.06,x103.93y30.05

  6. dayCoverage=true&dnboundCoverage=true

目前,已知该链接中所有组成部分(5填写一个矩形坐标范围,格式为x1y1,x2y2,其中(x1, y1)是该矩形左上角经纬度,(x2, y2)是该矩形右下角经纬度,此矩形必须与目标瓦片有重叠,且越小越好)。

于是,就可以开始快乐玩耍了!

通过requests库,访问链接,代码如下:

response = requests.get(
            f'https://ladsweb.modaps.eosdis.nasa.gov/api/v1/files/'
            f'product={product}&collection={collection}&'
            f'dateRanges={date1}..{date2}&'
            f'areaOfInterest={location}&'
            f'dayCoverage=true&dnboundCoverage=true',
            headers=headers)
print(response.text)

将打印出所需数据,{"2372727299":{"name":"MOD11A1.A2010010.h23v05.006.2016025213211.hdf","size":"7322065","collection":6,"ESDT":"MOD11A1","start":"2010-01-10 00:00:00","end":"2010-01-10 00:00:01","FODCompression":null,"FOSDCompression":null,"status":"Online","fileURL":"\/archive\/allData\/6\/MOD11A1\/2010\/010\/MOD11A1.A2010010.h23v05.006.2016025213211.hdf"},……}

遍历这个字典,可提取到逐个影像文件名,并拼接成完整下载链接,写入txt。

for info in data.values():
    name = info['name']
    day = name[13:16]
    link_tile = name[17:23]
    url = 'https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/{}/{}/{}/{}'.format(product, yr, day, name)
    with open(link_path, 'a+') as f2:
        if link_tile == tile:
            f2.write(url + '\n')

这样就将所有影像的下载链接保存到一个TXT文件中。

完整代码见公众号,回复关键字'cml'

已经获取了全部下载链接,如何根据链接批量进行下载呢?

公众号:小猪被骑的日常

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
批量下载MODIS数据,可以按照以下步骤进行操作: 1. 登录MODIS官方网站(LAADS DAAC)\[1\],在"Find Data"页面搜索需要的相关数据。输入数据类型、时间范围和地理范围等信息进行搜索。例如,你可以搜索MOD15A2H产品数据,时间范围为2020年1月1日至2020年12月31日,地理范围为西安地区。 2. 在搜索结果中找到需要的数据,点击下载按钮。这将打开一个表格。 3. 使用脚本读取表格中的数据,并点击下载按钮。请注意,页面加载可能较慢,而且数据是逐条加载的,因此需要处理好下载的顺序,以确保数据能够完整下载\[2\]。 4. 下载数据可能是缩略图相关的信息,可以根据返回的信息拼接出完整的下载链接。例如,缩略图的地址可以通过前缀(https://ladsweb.modaps.eosdis.nasa.gov/)+接口返回的URL(/archive/allData/61/MOBRGB/2023/020)+返回信息中的文件名(MOBRGB.A2023020.0530.061.2023020164537.jpg)来得到\[3\]。 需要注意的是,下载MODIS数据可能需要使用selenium等工具进行网页自动化操作。确保已经安装了selenium,并按照需要的环境进行配置。 希望以上信息对你有帮助!如果还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* [MODIS数据批量下载](https://blog.csdn.net/m0_48011081/article/details/128643919)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python批量下载modis数据(可筛选日期、范围、数据类型)](https://blog.csdn.net/Neuromancerr/article/details/128732342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值