??本文主要對GEE中的依據(jù)柵格圖像繪制直方圖與時(shí)間序列圖并調(diào)整圖像可視化參數(shù)操作加以介紹懦冰。本文是谷歌地球引擎(Google Earth Engine,GEE)系列教學(xué)文章的第八篇橱健,更多GEE文章請參考專欄:GEE學(xué)習(xí)與應(yīng)用(https://blog.csdn.net/zhebushibiaoshifu/category_11081040.html)。
??首先,依據(jù)第三篇GEE教學(xué)博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117390431)中內(nèi)容女淑,我們將美國普查局(United States Census Bureau)發(fā)布的2018年主要合法邊界劃分數(shù)據(jù)產(chǎn)品導(dǎo)入GEE;隨后辜御,依據(jù)第二篇GEE教學(xué)博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117296956)中內(nèi)容鸭你,我們將GMTED2010數(shù)據(jù)產(chǎn)品導(dǎo)入GEE;并對上述二者做好重命名擒权。同時(shí)袱巨,依據(jù)第三篇GEE教學(xué)博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117390431)中內(nèi)容,將美國中西部堪薩斯州的矢量圖層提取出來碳抄。
var kansas=counties.filterMetadata("GEOID","starts_with","20");
Map.addLayer(kansas,{},"Kansas");
??首先愉老,我們進(jìn)行直方圖的繪制。在這里剖效,需要基于ui.Chart.image.histogram()
函數(shù)進(jìn)行繪制嫉入。
var hist=ui.Chart.image.histogram(DEM,kansas,200,20);
print(hist);
??其中,DEM
即為繪制直方圖所依據(jù)的柵格圖像璧尸,也就是依據(jù)其數(shù)值進(jìn)行繪圖咒林;kansas
為需要繪圖的范圍,也就是依據(jù)這個(gè)范圍內(nèi)DEM
圖像的數(shù)值進(jìn)行直方圖繪制爷光;200
為縮放系數(shù)映九,亦即繪圖前重采樣時(shí)新空間分辨率的數(shù)值,單位為米——之所以GEE在繪圖前會(huì)自動(dòng)對待繪圖圖層做一次重采樣瞎颗,是因?yàn)槿魶]有繪圖前的重采樣件甥,對于空間分辨率較高的遙感影像(例如Landsat 8的30 m空間分辨率),繪圖時(shí)所需要的計(jì)算時(shí)間與空間都太大了哼拔,導(dǎo)致繪圖效率不高引有;最后一個(gè)20
是繪制直方圖的柱子數(shù)量。
??運(yùn)行代碼倦逐,可以看到直方圖會(huì)出現(xiàn)在右側(cè)“Console”一欄中譬正。
??在這里,為了更清晰地看到ui.Chart.image.histogram()
函數(shù)幾個(gè)參數(shù)的作用檬姥,我們再來兩組對比曾我。
??首先,將前述縮放系數(shù)由200
修改為20
健民,也就是重采樣時(shí)空間分辨率由200 m改為20 m抒巢,就可以看到出現(xiàn)了像元數(shù)量較多導(dǎo)致無法繪圖的錯(cuò)誤。
??其次秉犹,將前述柱子數(shù)量由20
修改為200
蛉谜,可以看到新的直方圖柱子數(shù)量明顯增多稚晚,密密麻麻。
??同時(shí)型诚,我們可以基于.setOptions()
函數(shù)對直方圖的可視化選項(xiàng)進(jìn)行修改客燕。
hist=hist.setOptions({
title:"Histogram of Elevation in Kansas",
colors:["#f6c7b6"]
});
print(hist);
??其中, title
為直方圖的標(biāo)題狰贯,colors
則為直方圖顏色也搓。重新執(zhí)行代碼,可以看到直方圖已經(jīng)具有標(biāo)題且顏色發(fā)生改變涵紊。
??同時(shí)还绘,依據(jù)第四篇GEE教學(xué)博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117573181)中內(nèi)容,還可以將.setOptions()
函數(shù)中的若干可視化參數(shù)首先保存在一個(gè)獨(dú)立的參數(shù)hist_option
中栖袋,再將hist_option
放入.setOptions()
函數(shù)拍顷。
var hist_option={
title:"Histogram of Elevation in Kansas",
colors:["#9932CC"],
is3D:true
}
hist=hist.setOptions(hist_option);
print(hist);
??可以看到,將可視化參數(shù)放入一個(gè)單獨(dú)的參數(shù)中塘幅,效果與前述代碼一致昔案。另外,這里還加入了一個(gè)is3D
參數(shù)电媳,是配置繪圖結(jié)果是否為3D效果的參數(shù)踏揣;但這個(gè)參數(shù)對于餅圖等比較有效,對于本文直方圖而言并沒有立體效果匾乓。
??接下來捞稿,我們繪制時(shí)間序列圖。
??依據(jù)第二篇GEE教學(xué)博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117296956)中內(nèi)容拼缝,我們將Landsat 8 Collection 1 Tier 1的大氣表觀反射率TOA Reflectance產(chǎn)品導(dǎo)入GEE娱局,并對其做好重命名。同時(shí)咧七,基于第六篇GEE教學(xué)博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/119145230)中介紹的.select()
函數(shù)衰齐,將Landsat 8 Collection 1 Tier 1大氣表觀反射率TOA Reflectance產(chǎn)品的前九個(gè)波段提取出來;這是因?yàn)榻酉聛砦覀儾恍枰獙θ坎ǘ芜M(jìn)行繪圖继阻,選取一部分波段即可
var landsat_band=landsat.select("B[1-9]");
??隨后耻涛,利用地圖左上角的“Add amarker”按鈕,在地圖任意位置選擇一個(gè)點(diǎn)要素瘟檩。
??選擇完畢后可以看到點(diǎn)要素已經(jīng)出現(xiàn)在“Imports”區(qū)域中抹缕。
??我們對其加以重命名。
??隨后墨辛,利用.buffer()
函數(shù)以選擇的點(diǎn)為基準(zhǔn)卓研,繪制一個(gè)緩沖區(qū),1000
表示緩沖區(qū)長度為1000 m(相當(dāng)于就是畫一個(gè)以我們剛剛選擇的點(diǎn)為圓心背蟆,1000 m為半徑的圓形區(qū)域)鉴分。除了點(diǎn)要素哮幢,.buffer()
函數(shù)還可以以線带膀、面等要素為中心志珍,進(jìn)行緩沖區(qū)域的確立。
var area=point.buffer(1000);
Map.addLayer(area);
??繪制的圓形區(qū)域需要將地圖縮放比較大時(shí)才可以看到垛叨。
??接下來伦糯,就可以利用ui.Chart.image.series()
函數(shù)進(jìn)行時(shí)間序列圖的繪制。
var series=ui.Chart.image.series(landsat_band,area,ee.Reducer.mean(),50);
print(series);
??其中嗽元,landsat_band
為需要進(jìn)行繪制時(shí)間序列圖的圖層敛纲,area
就是需要繪圖的區(qū)域;這兩個(gè)參數(shù)的意義分別和前述ui.Chart.image.histogram()
函數(shù)的前兩個(gè)參數(shù)意義比較接近剂癌。隨后淤翔,ee.Reducer.mean()
表示在繪制各波段的折線圖時(shí),取我們整個(gè)圓形緩沖區(qū)域各像元數(shù)值的平均佩谷;這是由于旁壮,因?yàn)槲覀兯x的繪圖區(qū)域并不單單僅有一個(gè)像元(如果只選擇一個(gè)像元的話,就很容易出現(xiàn)部分時(shí)間該像元沒有遙感影像覆蓋谐檀,導(dǎo)致時(shí)間序列折現(xiàn)圖出現(xiàn)“斷線”的情況)抡谐,而是一個(gè)區(qū)域;而一個(gè)區(qū)域中自然是有很多個(gè)像元了桐猬,那么這么多像元的數(shù)值取哪一個(gè)作為最終出現(xiàn)在時(shí)間序列圖中的數(shù)值呢麦撵?一般的,我們就取區(qū)域內(nèi)的平均值溃肪、極值等具有代表意義的數(shù)值進(jìn)行繪圖免胃。最后,50
同樣是縮放系數(shù)惫撰,和前述ui.Chart.image.histogram()
函數(shù)的縮放系數(shù)意義一致杜秸。
??執(zhí)行代碼,稍等片刻即可看到時(shí)間序列圖繪制完畢润绎。
??前面我們用了Landsat 8的9個(gè)波段進(jìn)行繪圖撬碟,且緩沖區(qū)域的半徑為1000 m,重采樣的空間分辨率(縮放系數(shù))也是比較高的50 m莉撇,計(jì)算量比較大呢蛤,導(dǎo)致繪圖時(shí)間比較長;我們還可以對參數(shù)加以適當(dāng)修改棍郎,從而提升繪圖效率其障。
var landsat_band=landsat.select("B[1-3]");
var area=point.buffer(300);
Map.addLayer(area);
var series=ui.Chart.image.series(landsat_band,area,ee.Reducer.mean(),200);
print(series);
??例如,以上代碼減少了繪圖的波段數(shù)量與緩沖區(qū)域半徑涂佃,同時(shí)將縮放系數(shù)的數(shù)值增大(空間分辨率降低)励翼,得到新的繪圖結(jié)果如下蜈敢。
??前面提到了,對于一個(gè)包含多個(gè)像元的區(qū)域汽抚,我們往往采取平均值抓狭、極值等方式進(jìn)行繪圖;那么我們就將ee.Reducer.mean()
改為ee.Reducer.max()
造烁,繪制一個(gè)區(qū)域像元最大值對應(yīng)的時(shí)間序列圖否过。
var series=ui.Chart.image.series(landsat_band,area,ee.Reducer.max(),200);
print(series);
??可以看到,用像元最大值得到的時(shí)間序列圖與前述平均值得到的時(shí)間序列圖比起來惭蟋,相對要高一些苗桂;但是高得也并不明顯,畢竟這兩幅時(shí)間序列圖對應(yīng)的繪圖區(qū)域半徑只有300 m告组,且重采樣后的空間分辨率為200 m煤伟,即單個(gè)像元的面積在圓形區(qū)域內(nèi)也顯得比較大。
??此外木缝,將鼠標(biāo)放到右側(cè)的圖中便锨,還可以交互式顯示圖中的具體數(shù)值。