GLASS产品下载
全球陆表特征参量数据产品(GLASS产品),由北京师范大学梁顺林教授团队自主研发,数据产品包括叶面积指数(LAI)、反照率(Albedo)、发射率(BBE)、光合有效辐射(PAR)、下行短波辐射(DSR)、净辐射(NR)、光合有效辐射吸收比(FAPAR)、植被覆盖率(FVC)、潜热(ET)和植被总初级生产力(GPP)等多种产品。GLASS产品是基于多源遥感数据和地面实测数据,反演得到的长时间序列、高精度的全球地表遥感产品。这些产品为研究全球环境变化提供了可靠的依据,能够广泛应用于全球、洲际和区域的大气、植被覆盖、水体等方面的动态监测,并与气温、降水等气候变化表征参数结合起来,应用于全球变化分析。
打开:http://glass-product.bnu.edu.cn/
1 国家地球系统科学数据共享服务平台
National Earth System Science Data Sharing Infrastructure
2 马里兰大学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:\HDFFILES\ALLHDFS' UrlDownload(url1,filename1,Directory) UrlDownload(url2,filename2,Directory)
3 预处理
下载好的hdf数据还需要进行拼接与裁剪等操作:
(1)python编程调用MRT进行拼接重采样投影转换(MRT在官方宣布中已经退役)
(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