全球陸表特征參量數據產品(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