关注公众号,分享GIS知识、ArcGIS教程、SCI论文与科研日常等
关于
之前提到一个下载MODIS数据的网站,在这篇博客。不过该网站没有MOD06,MOD07,MOD03等产品。这些2级产品和3级产品命名不同,而且没有固定的行列号(文件名里面没有位置信息)。以MOD06_L2产品为例(来自官网MOD06产品指导手册):
这个名字里面并没有行列好信息(hxvx),实际上,连位置信息都没有。我自己也在官网上检索了很多数据并观察了他们的命名,还是没发现什么规律,同一个地点的数据filename好像没有固定不变的部分。
先说怎么在官网上下载:访问这个网站,就可以检索你需要的数据,数据量少的话也是可以一个个下载,不过,数据量大的情况下这样就显得很呆。下面是检索和下载数据的页面
同样,官网提供了批量下载的方法,看这个页面
这里我就把python的方法贴出来了,稍作改动,实现批量下载。在使用这个代码前你需要知道的几点:
1 提前准备
下载的核心函数:sync(src, dest, tok),需要指定下载源,下载到本地的位置,和令牌。
令牌需要登陆-profile-然后生成app keys即可。
2 下载源
数据从这个站点下载,界面如下:
首先要找到自己下载的数据在哪个位置,例如要下载MOD06_L2,他在:
https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/61/MOD06_L2/,再下一级文件夹为year/DOY,DOY下才是hdf文件,DOY为儒略日,下面的代码也给了如何将年月日转为儒略日。
3 想下载特定地方的数据
时间和位置是下载数据的两大筛选条件,时间由于官网良好的数据组织也很好实现。但是最后一级文件夹下是当天的全球数据,而且文件名本身不包含位置信息,观察一下也没发现同一位置的文件有什么相同的部分(据我观察)。所以代码实现上走了其他路。
首先再官网的search页面筛选出来我们需要的数据,筛选后下载下来包含所有数据条目的csv或json文件,然后程序中从下载的文件中获取所有数据条目,下载时做个判断即可。
4 提交订单下载
除此之外,也可以向官网提交订单,官网会发送一个URL到邮件,这个url就可以用来下载筛选的数据。上图第五步为提交订单。需要5分钟到10天的审核期。
python代码
说明:python代码在官网提供的下载代码基础上进行的修改
from __future__ import (division, print_function, absolute_import, unicode_literals)
import os
import os.path
import shutil
import sys
try:
from StringIO import StringIO # python2
except ImportError:
from io import StringIO # python3
USERAGENT = 'tis/download.py_1.0--' + sys.version.replace('\n','').replace('\r','')
def geturl(url, token=None, out=None):
headers = {
'user-agent' : USERAGENT }
if not token is None:
headers['Authorization'] = 'Bearer ' + token
try:
import ssl
CTX = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
if sys.version_info.major == 2:
import urllib2
try:
fh = urllib2.urlopen(urllib2.Request(url, headers=headers), context=CTX)