欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用google earth engine提取亚马逊每年森林火灾区域

程序员文章站 2022-05-26 19:16:04
...

2019年亚马逊大火还历历在目,作为学遥感的学生,我们可以使用遥感影像来获得着火区。但是使用传统遥感太过于麻烦,我们可以使用GEE,1分钟获得亚马逊10年的着火区域,并统计面积与导出着火区。

代码主要步骤:

1.数据选择与预处理;

数据源选择modis的火点产品数据,该数据是modis的500m月合成数据。

使用google earth engine提取亚马逊每年森林火灾区域

研究区是通过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