2019年亞馬遜大火還歷歷在目,作爲學遙感的學生,我們可以使用遙感影像來獲得着火區。但是使用傳統遙感太過於麻煩,我們可以使用GEE,1分鐘獲得亞馬遜10年的着火區域,並統計面積與導出着火區。
代碼主要步驟:
1.數據選擇與預處理;
數據源選擇modis的火點產品數據,該數據是modis的500m月合成數據。
研究區是通過roi工具在GEE上面繪製的,包括了亞馬遜森林。
var temp=MCD64.filterDate(start_date,end_date).mosaic().clip(SA)
var burn=temp.gte(0)
Map.addLayer(burn)
2.下載着火區域;
由於下載區域比較大,需要把maxpixel設置大一點。
Export.image.toDrive({
image:burn,
maxPixels:1e13,
scale: 500,
region :SA,
fileNamePrefix:NAME,
folder:NAME,
skipEmptyTiles:true,
})
3.統計着火區域面積;
在GEE裏面沒有直接統計面積的函數,一般有兩個辦法:
第一種方法是計算每個像素的面積,再統計所有像素的面積;
第二種方法是統計所有像素的個數,再乘以單個像素的面積;
我才用的是第一種方法:
//計算單個像素面積
var AreaImage = burn.multiply(ee.Image.pixelArea());
//統計面積
var AreaNum=AreaImage.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: SA,
scale: 500,
maxPixels: 1e14})
var BurnedArea=AreaNum.get('BurnDate')
print(NAME+"這一年的面積"+"(單位:平方米)")
print(BurnedArea)
4.嵌套一個時間循環函數。
因爲我們想嵌套一個時間循環,得到2010到2020年的亞馬遜森林着火情況.get_monthly_burn是把前3個步驟封裝好,併名爲get_monthly_burn函數,方便直接調用。
//日期循環
for(var i=0;i<1;i++){
var start_date='201'+i+'-1-01';
var end_date= '201'+i+'-12-31';
get_monthly_water(start_date,end_date)
}
根據這個腳本,我們就能得到亞馬遜這10年的火災情況,下表就是統計的着火面積:
時間 | 火災面積(萬平方千米) | 時間 | 火災面積(萬平方千米) | |
2000 | 0.30 | 2019.1 | 0.74 | |
2001 | 19.43 | 2019.2 | 0.72 | |
2002 | 30.69 | 2019.3 | 0.73 | |
2003 | 22.41 | 2019.4 | 0.24 | |
2004 | 28.54 | 2019.5 | 2.71 | |
2005 | 31.20 | 2019.6 | 0.68 | |
2006 | 19.63 | 2019.7 | 1.60 | |
2007 | 44.87 | 2019.8 | 7.28 | |
2008 | 20.46 | 2019.9 | 10.28 | |
2009 | 12.53 | 2019.1 | 3.26 | |
2010 | 47.07 | 2019.11 | 1.40 | |
2011 | 19.27 | 2019.12 | 0.34 | |
2012 | 28.26 | |||
2013 | 13.76 | |||
2014 | 18.18 | |||
2015 | 23.52 | |||
2016 | 21.13 | |||
2017 | 26.30 | |||
2018 | 12.07 | |||
2019 | 27.17 |
可以看出其實亞馬遜森林火災並沒有想象中嚴重,歷史上的2007年的火災更嚴重。如此引人關注,可能是因爲2019年9月份的着火面積太大了。