GLASS产品下载

全球陆表特征参量数据产品(GLASS产品),由北京师范大学梁顺林教授团队自主研发,数据产品包括叶面积指数(LAI)、反照率(Albedo)、发射率(BBE)、光合有效辐射(PAR)、下行短波辐射(DSR)、净辐射(NR)、光合有效辐射吸收比(FAPAR)、植被覆盖率(FVC)、潜热(ET)和植被总初级生产力(GPP)等多种产品。GLASS产品是基于多源遥感数据和地面实测数据,反演得到的长时间序列、高精度的全球地表遥感产品。这些产品为研究全球环境变化提供了可靠的依据,能够广泛应用于全球、洲际和区域的大气、植被覆盖、水体等方面的动态监测,并与气温、降水等气候变化表征参数结合起来,应用于全球变化分析。

打开:http://glass-product.bnu.edu.cn/

国家地球系统科学数据共享服务平台
National Earth System Science Data Sharing Infrastructure

马里兰大学GLASS下载
UNIVERSITY OF MARYLAND GLASS Products Download

行列号和MODIS数据一致

 

 问题:如何实现对于固定研究区域数据的下载呢?毕竟是8天分辨率的,如果一个个去手点肯定很麻烦,因此在这里想通过python编程实现:

 比如说,想要h26v05和h27v05的数据,时间为2000-2018年

代码如下,主要参考:

这里主要通过正则表达式进行匹配数据

https://zhuanlan.zhihu.com/p/65474873

import urllib.request# url request
import re            # regular expression
import os            # dirs
import time

'''
url 下载网址
pattern 正则化的匹配关键词
Directory 下载目录
'''
def BatchDownload(url,pattern,Directory):   
    # 拉动请求,模拟成浏览器去访问网站->跳过反爬虫机制
    headers = {'User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]   
    # 获取网页内容
    content = opener.open(url).read().decode('utf8')    
    # 构造正则表达式,从content中匹配关键词pattern
    raw_hrefs = re.findall(pattern, content, 0)
    # set函数消除重复元素
    hset = set(raw_hrefs)
    
    # 下载链接
    for href in hset:
        # 之所以if else 是为了区别只有一个链接的特别情况
        if(len(hset)>1):
            link = url + href[0]
            filename = os.path.join(Directory,href[0])
            print("正在下载",filename)
            urllib.request.urlretrieve(link, filename)
            print("成功下载!")
        else:
            link = url +href[0]
            print(link)
            filename = os.path.join(Directory, href[0])
            print("正在下载",filename)
            urllib.request.urlretrieve(link, filename)
            print("成功下载!")   
        # 无sleep间隔,网站认定这种行为是攻击,反反爬虫
        time.sleep(1)

for year in range(2000,2019):
    add_year='http://www.glass.umd.edu/FVC/MODIS/500m/'+str(year)+'/'
    for eday in range(1,362,8):
        add_day=add_year+str(eday).rjust(3,'0')+'/'
        print(add_day)
        BatchDownload(add_day,
              '(GLASS10E01.V40.A(d*).h26v05.(d*)2019363.hdf)',
              'H:HDFFILES')
        BatchDownload(add_day,
              '(GLASS10E01.V40.A(d*).h27v05.(d*)2019363.hdf)',
              'H:HDFFILES')

下载结果:

此外,从数据下载链接也可以找出规律,因此也可以简化一下:

import urllib.request# url request
import os            # dirs

#url为下载链接
#filename为文件名
#Directory为希望下载文件保存所在的文件夹目录
def UrlDownload(url,filename,Directory):   
    downfilename = os.path.join(Directory,filename)#下载到本地位置
    print("正在下载:",filename)
    urllib.request.urlretrieve(url,downfilename)#下载
    print("成功下载!")

for year in range(2000,2019):
    add_year='http://www.glass.umd.edu/FVC/MODIS/500m/'+str(year)+'/'
    for eday in range(1,362,8):
        filename1='GLASS10E01.V40.A'+str(year)+str(eday).rjust(3,'0')+'.h27v05.2019363.hdf'
        filename2='GLASS10E01.V40.A'+str(year)+str(eday).rjust(3,'0')+'.h26v05.2019363.hdf'
        url1=add_year+str(eday).rjust(3,'0')+'/'+filename1
        url2=add_year+str(eday).rjust(3,'0')+'/'+filename2
        Directory='H:HDFFILESALLHDFS'
        UrlDownload(url1,filename1,Directory)
        UrlDownload(url2,filename2,Directory)

3 预处理

下载好的hdf数据还需要进行拼接与裁剪等操作:

(1)python编程调用MRT进行拼接重采样投影转换(MRT在官方宣布中已经退役)

(2)python调用HEG工具批量处理MODIS数据

(3)python GDAL库处理栅格数据

GDAL 将HDF文件转换为TIF文件

GDAL 拼接TIF文件 :https://blog.csdn.net/XBR_2014/article/details/85255412

GDAL 矢量裁剪TIF文件 :

(4)python 调用 arcpy 批量处理 参考:https://blog.csdn.net/u012131430/article/details/107868742

参考链接:

https://zhuanlan.zhihu.com/p/150656411

https://academic.hep.com.cn/skld/CN/book/978-7-04-040329-9

原文地址:https://www.cnblogs.com/icydengyw/p/14529848.html