基于GEE使用MODIS/006/MCD64A1进行长时间序列野外火点识别代码

hellohello!GIS辣妹来了,今天带来使用 Google Earth Engine (GEE) 平台来提取和分析福建省在 2010 年至 2020 年期间的火灾数据的代码,导出格式为带有经纬度信息的表格数据,后续可在各个gis软件中进行可视化,效果如下,使用数据为MODIS 火灾数据集(MCD64A1)。
在这里插入图片描述

GEE中代码如下,代码如果需要自己运行的话有以下两点需要修改:
1.边界改成自己上传的边界
2.定义自己的时间序列,代码是2010-2020

// 加载用户自定义的福建省边界
var fujian = ee.FeatureCollection("users/dyx13100530097/fujian");

// 加载MODIS火灾数据集
var fireCollection = ee.ImageCollection('MODIS/006/MCD64A1')
  .filterDate('2010-01-01', '2020-12-31')
  .filterBounds(fujian);

// 选择感兴趣的波段:例如烧毁日期Band(BurnDate)
var burnDate = fireCollection.select('BurnDate');

// 提取火点函数
var extractFirePoints = function(image) {
  var fireMask = image.select('BurnDate').gt(0);  // 烧毁日期大于0的区域
  var fireVectors = fireMask.selfMask().reduceToVectors({
    geometry: fujian.geometry(),
    geometryType: 'centroid',
    scale: 500,
    maxPixels: 1e8
  });
  return fireVectors.set({system: image.get('system:time_start')}); // 添加时间属性
};

// 映射提取火点函数到图像集合
var fireVectorsCollection = burnDate.map(extractFirePoints);

// 扁平化火点集合
var firePointsFlattened = fireVectorsCollection.flatten();

// 添加经纬度信息
var withLatLon = firePointsFlattened.map(function(feature) {
  var centroid = feature.geometry().centroid();
  var lon = centroid.coordinates().get(0);
  var lat = centroid.coordinates().get(1);
  return feature.set('longitude', lon).set('latitude', lat);
});

// 可视化火点
Map.addLayer(withLatLon, {color: 'red'}, 'Fire Points');

// 设置地图中心
Map.centerObject(fujian, 7);

// 导出带有经纬度的火点数据为CSV文件
Export.table.toDrive({
  collection: withLatLon,
  description: 'Fujian_Fire_Points_2010_2020_CSV',
  fileFormat: 'CSV',
  selectors: ['system:time_start', 'longitude', 'latitude'] // 选择需要导出的字段
});

给辣妹点个赞再走吧!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dNBR值(differenced Normalized Burn Ratio)是衡量火灾烈度的指标之一,可以通过MODIS/061/MCD64A1数据计算得到。 以下是基于GEE计算dNBR值的步骤: 1. 打开GEE平台并登录账号。 2. 在左侧菜单栏中选择“地图”选项,进入地图界面。 3. 在地图界面中,点击左上角的“+”按钮,添加MODIS/061/MCD64A1数据。 4. 在左侧图层栏中选择“MODIS/061/MCD64A1_500m_aid0001”图层,并调整时间范围至所需的时间段。 5. 在左侧菜单栏中选择“代码编辑器”,并在编辑器中输入以下代码: ``` // 定义AOI区域 var aoi = ee.Geometry.Polygon( [[[113.0, 33.0], [115.0, 33.0], [115.0, 35.0], [113.0, 35.0], [113.0, 33.0]]], null, false); // 选择计算的时间段 var start_date = ee.Date.fromYMD(2019, 1, 1); var end_date = ee.Date.fromYMD(2019, 12, 31); // 选择计算的MODIS波段 var modis_bands = ['BurnDate','QA']; // 筛选出指定时间段内的MODIS数据 var modis_dataset = ee.ImageCollection('MODIS/006/MCD64A1') .select(modis_bands) .filterDate(start_date, end_date) .filterBounds(aoi); // 定义NDVI计算公式 var nbr_formula = function(image) { var nbr = image.normalizedDifference(['sur_refl_b04', 'sur_refl_b07']); return nbr.rename('NBR'); }; // 计算dNBR值 var pre_fire = ee.Image(modis_dataset.sort('system:time_start', false).first()).select('BurnDate'); var post_fire = ee.Image(modis_dataset.sort('system:time_start', true).first()).select('BurnDate'); var pre_nbr = nbr_formula(pre_fire); var post_nbr = nbr_formula(post_fire); var dNBR = post_nbr.subtract(pre_nbr).rename('dNBR'); // 将结果可视化 Map.centerObject(aoi, 9); Map.addLayer(dNBR, {min:-1,max:1,palette:['FF0000','FFFF00','00FF00']}, 'dNBR'); ``` 上述代码中,首先定义了计算区域(AOI)、计算时间段(start_date和end_date)以及需要计算的MODIS波段(modis_bands)。接着,通过ImageCollection函数筛选出指定时间段内的MODIS数据,并选择需要的波段。定义了计算dNBR值所需的函数(nbr_formula),并使用该函数计算出前火情(pre_fire)和后火情(post_fire)的NBR值,最终得出dNBR值(dNBR)。最后将结果可视化,其中min、max和palette参数可根据需要进行调整。 完成上述代码的输入和运行后,即可在地图上看到计算得到的dNBR值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值