MODIS數據的簡介和下載(三)——MODIS數據下載方式(基于MODIS Web Service)

這是MODIS數據的簡介和下載的最后一篇,下載方式的進階版——基于MODIS Web Service的下載方式。
這篇是筆者課程上機實習內容之一,做些簡要總結和整理。
事實上MODIS產品系列就如前面提到的,由于搭載在Terra星和Aqua星上,所以產品就包括了Terra星、Aqua星以及二者集成的產品。分別以MOD(Terra星)、MYD(Aqua星)、MCD(二者集成)作區分。具體的產品查詢網站除了前面文章簡單提到的之外,還可以查看官網。

https://lpdaac.usgs.gov/dataset_discovery/modis/modis_products_table/

當然這一次進階版的下載方式是基于Web Service的。那么Web Service是什么呢?這邊引用了課程ppt的一段話。

Web service是一個平臺獨立的,低耦合的,自包含的、基于可編程的web的應用程序,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述、發布、發現、協調和配置這些應用程序,用于開發分布式的互操作的應用程序。

Web Service技術, 能使得運行在不同機器上的不同應用無須借助附加的、專門的第三方軟件或硬件, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什么, 都可以相互交換數據。Web Service是自描述、 自包含的可用網絡模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基于一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減少了應用接口的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。

簡單說,這是個方便你下載的插件。具體的下載地址就在下面了。官方提供了多種語言的客戶端,包括Java,Perl,Python,Kepler,Matlab和R。本篇主要介紹Matlab和R的客戶端如何下載MODIS數據。

https://modis.ornl.gov/data/modis_webservice.html

先介紹Matlab的客戶端,首先在官網下載Matlab的客戶端。


客戶端壓縮包文件:

客戶端在Matlab的部署非常簡單。只需要拷貝到Matlab的工作目錄即可。當然使用的時候要求位于如圖的路徑中。

接下來就可以愉快地使用了。當然,由于官方的鏡像搬遷的問題,需要更新對應的鏡像地址。

對應在Matlab客戶端的modisClient.m文件中找到替換的鏡像地址,保存后即可開始使用。

在Matlab中調用不含任何參數的modisClient,可以看到可供下載的MODIS產品列表。

modisClient()

用產品名稱作為參數,則可以看到該產品下所有數據集。

modisClient('MOD15A2')
modisClient('MOD15A2','Lai_1km',36.833,116.567)

加上數據集名稱(以1 km的葉面積指數數據為例)以及經緯度坐標。結果為對應的數據集(該數據8天為間隔)所在的時間范圍。

在前面的基礎上加上時間范圍即可用客戶端下載對應的MODIS數據。數據的下載格式是一個多元結構體。包括了數據、轉換因子、對應時間序列和單位等等。這樣我們就用Matlab下載到了對應的MODIS數據。

YC_LAI2009=modisClient('MOD15A2','Lai_1km',36.833,116.567,2009000,2009365)

接下來我們講的是R語言的客戶端及其下載方式。R語言的客戶端有兩種配置方法,一個是基礎設置(基于SSOAP來進行),一個是高級設置(MODISTools包)。
筆者個人使用的是高級設置,基礎設置沒有配置過。只是對官方給出的例子做了下翻譯,具體的demo如下:

##確定你安裝了SSOAP包,否則先安裝SSOAP,用install.packages("SSOAP")
##接著你就可以嘗試用命令行的方式來下載裁切你想要的MODIS影像數據了

## 載入包
library(SSOAP)

## 獲取SOAP服務
ornlMODIS = processWSDL("http://daac.ornl.gov/cgibin/MODIS/GLBVIZ_1_Glb_subset/MODIS_webservice.wsdl")

## 定義函數設置
ornlMODISFuncs = genSOAPClientInterface(operations=ornlMODIS@operations[[1]], def=ornlMODIS)

## 使用獲取裁切影像的函數設定
result = ornlMODISFuncs@functions$getsubset(40.115,-110.025,
"MOD11A2","LST_Day_1km","A2001001","A2001025",1,1)

##打印結果
print(result)

基礎設置R語言demo地址:

https://modis.ornl.gov/files/modiswebservice/R_getsubset.r

接下來用MODISTools包來做測試,GetProducts函數類似于Matlab的moidsClient():

GetProducts()

而對應的查看數據集的函數并不是在GetProdcuts函數中填入參數,而是使用GetBands函數。

GetBands("MOD15A2")

對應查看數據時間范圍的函數為GetDates。

GetDates(36.833,116.567,"MOD15A2")

而類似于Matlab客戶端下載數據的函數則為GetSubset和MODISSubsets。

YC_LAI2009<-GetSubset(36.833,116.567,"MOD15A2","Lai_1km","A2009001","A2009081",KmAboveBelow = 0,KmLeftRight = 0)

GetSubset函數較為簡單。但筆者測試時,發現終止時間僅能到達第81天(LAI數據為8天合成產品)。目前尚不清楚具體原因,故最后使用MODISSubsets獲取對應的數據。MODISSubsets必須先建立一個數據框作為經緯度(lat,long為字段名),時間限制范圍(start.date,end.date為字段名)的數據。而函數中比較重要的參數還包括了Size和TimeSeriesLength,Size可以用默認值(經緯度位置所處瓦片數量,c(0,0)表示像元中心值),TimeSeriesLength表示時間序列長度,等于1代表從一年的開頭到結尾。運行程序,會發現在工作目錄下生成了一個.asc文件(即對應MODIS下載下來的數據)。

yclai2009<-data.frame(lat=36.833,long=116.567,start.date=2009,end.date=2009)
MODISSubsets(LoadDat = yclai2009,Products = "MOD15A2",Bands = "Lai_1km",Size = c(0,0),StartDate = T,TimeSeriesLength = 1)

最后對獲取的LAI數據進行繪圖可視化。

#Matlab中
Puredata=[YC_LAI2009.data(:,:)]
plot([0:(length(Puredata)-1)]*8+1,Puredata*YC_LAI2009.scale,'b-')
ylabel=(YC_LAI2009.units)
xlabel=('day of year')
title=('禹城站2009年LAI')

#R中
a<-read.table("Lat36.83300Lon116.56700Start2009-01-01End2009-12-31___MOD15A2.asc",sep = ",")
lai<-data.frame(day=seq(1,365,8),lai=a$V11*0.1)
plot(lai,type="l",pch=16,col="blue",xlab="day of year",ylab="LAI",main="禹城站2009年LAI")

Matlab繪圖結果


R繪圖結果


總的來說,Matlab和R的客戶端下載各有優缺點,而基于MODIS Web Service的下載方式最大好處就是在于它的Subset功能,而不是需要先下載整景影像再處理。在做單點模型的時候是非常快捷的。當然客戶端的其它函數還有很多,包括像質量控制。本文沒有對數據進行質量控制。實際研究中這個是必須進行的步驟(也可以基于客戶端的函數來進行,譬如R里面的QualityCheck函數,Matlab的modisClientGetQC等)。
此外地理所也開發了在線平臺,研究人員只需填寫所需參數即可下載。

http://159.226.110.142/carboncloud/datetool/toolmethod?url=onlinedo&pId=3

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容