使用google earth engine提取亞馬遜每年森林火災區域

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月份的着火面積太大了。

完整的代碼可進入GEE裏面查看:https://code.earthengine.google.com/191ce5cf316191bd1878ecb0e9af7fef

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章