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:\HDFFILES\ALLHDFS'
        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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM