全部版块 我的主页
论坛 经济学论坛 三区 农林经济学
40 0
2025-11-18

澳大利亚山火大气污染物时空分析

基于多源卫星数据的2019-2020年澳大利亚山火期间大气污染物监测与影响评估

研究概述

本系统利用Sentinel-5P、Landsat 8和MODIS等多源卫星数据,对2019-2020年澳大利亚破坏性山火期间的大气污染物进行全面的时空分析,揭示山火对空气质量的影响程度和空间分布特征。

完整代码与中文注释

// 定义研究区域(AOI)和关注区域(ROI)
var geometry = aoi;
// 将地图中心设置在研究区域
Map.centerObject(roi, 7);
// 定义Sentinel-5P大气污染物数据集合
var no2 = ee.ImageCollection("COPERNICUS/S5P/OFFL/L3_NO2");
var co = ee.ImageCollection("COPERNICUS/S5P/OFFL/L3_CO");
// 山火高峰期日期定义(澳大利亚山火峰值期)
var fireStart = '2019-12-15';
var fireEnd = '2020-01-10';
//////////////////////////////////////////////////////////////////////////////////
// 第一部分:Sentinel-5P一氧化碳(CO)时间序列分析(2019-2020)
//////////////////////////////////////////////////////////////////////////////////
/*
一氧化碳是森林火灾过程中释放的关键污染物。它是一种无色无味的气体,
能够在大气中长距离传输。本部分分析两年期间的月度CO浓度变化,
观察山火期间的浓度峰值。
*/
var timeSeriesStart = '2019-01-01';
var timeSeriesEnd = '2024-12-31';
// 加载Sentinel-5P CO数据集合
var co_collection = ee.ImageCollection(co)
.filterBounds(aoi)
.filterDate(timeSeriesStart, timeSeriesEnd);
// 创建24个月的序列(2019年1月至2020年12月)
var months = ee.List.sequence(0, 23);
/**
* 提取月度CO数据
* 遍历每个月,计算研究区域内的平均CO浓度
*/
var monthlyCO = months.map(function(month) {
var year = ee.Number(month).divide(12).floor().add(2019);
var monthOfYear = ee.Number(month).mod(12).add(1);
var monthStart = ee.Date.fromYMD(year, monthOfYear, 1);
var monthEnd = monthStart.advance(1, 'month');
// 过滤当前月份的CO数据
var filtered = co_collection.filterDate(monthStart, monthEnd);
var meanCO = filtered.mean().select('CO_column_number_density');
// 计算AOI区域内的平均CO浓度
var monthlyCOValue = meanCO.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: aoi,
scale: 5000,  // 5公里分辨率以减少计算量
bestEffort: true,
maxPixels: 1e8
}).get('CO_column_number_density');
return monthlyCOValue;
});
// 创建YYYY-MM格式的月份标签
var monthLabels = months.map(function(month) {
var year = ee.Number(month).divide(12).floor().add(2019);
var monthOfYear = ee.Number(month).mod(12).add(1);
var monthString = ee.String(year.format('%d')).cat('-').cat(monthOfYear.format('%02d'));
return monthString;
});
// 转换为字典用于制图
    
        var monthlyCO_dict = ee.Dictionary.fromLists(monthLabels, monthlyCO);
        // 构建图表所需的要素集合
        var co_features = monthlyCO_dict.map(function(key, value) {
            var month = ee.String(key);
            var co_value = ee.Number(value);
            var feature = ee.Feature(null, { month: month, co: co_value });
            return feature;
        });
        var co_featureCollection = ee.FeatureCollection(co_features.values());
        // 绘制CO时间序列图表
        var coChart = ui.Chart.feature.byFeature(co_featureCollection, 'month', ['co'])
            .setChartType('LineChart')
            .setOptions({
                title: 'Sentinel-5P:澳大利亚山火期间CO浓度变化(2019-2020)',
                hAxis: {
                    title: '月份',
                    slantedText: true,
                    slantedTextAngle: 45
                },
                vAxis: { title: 'CO浓度 (mol/m?)' },
                lineWidth: 2,
                pointSize: 5,
                series: {
                    0: { color: 'blue' },
                },
                legend: { position: 'none' }
            });
        print('=== CO时间序列图表 ===');
        print(coChart);
        /////////////////////////////////////////////////////////////////////////
        // 第二部分:Sentinel-5P二氧化氮(NO2)时间序列分析(2019-2020)
        /////////////////////////////////////////////////////////////////////////
        /*
        二氧化氮是燃烧过程产生的另一关键污染物。它可以导致空气质量下降,
        并可能生成次生污染物。这部分分析了相同两年内的月度NO2浓度变动。
        */
        // 加载Sentinel-5P NO2数据集
        var no2_collection = ee.ImageCollection(no2)
            .filterBounds(aoi)
            .filterDate(timeSeriesStart, timeSeriesEnd);
        // 遍历月份列表,提取每月NO2数据
        var monthlyNO2 = months.map(function(month) {
            var year = ee.Number(month).divide(12).floor().add(2019);
            var monthOfYear = ee.Number(month).mod(12).add(1);
            var monthStart = ee.Date.fromYMD(year, monthOfYear, 1);
            var monthEnd = monthStart.advance(1, 'month');
            // 筛选当前月份的NO2数据
            var filtered = no2_collection.filterDate(monthStart, monthEnd);
            var meanNO2 = filtered.mean().select('NO2_column_number_density');
            // 计算AOI区域的平均NO2浓度
            var monthlyNO2Value = meanNO2.reduceRegion({
                reducer: ee.Reducer.mean(),
                geometry: aoi,
                scale: 5000,  // 5公里分辨率降低计算负担
                bestEffort: true,
                maxPixels: 1e8
            }).get('NO2_column_number_density');
            return monthlyNO2Value;
        });
        // 转化为字典以便绘图
        var monthlyNO2_dict = ee.Dictionary.fromLists(monthLabels, monthlyNO2);
        // 构建图表所需的要素集合
        var no2_features = monthlyNO2_dict.map(function(key, value) {
            var month = ee.String(key);
    
var no2_value = ee.Number(value);
var feature = ee.Feature(null, { month: month, no2: no2_value });
return feature;
});
var no2_featureCollection = ee.FeatureCollection(no2_features.values());
// 创建NO2时间序列图表
var no2Chart = ui.Chart.feature.byFeature(no2_featureCollection, 'month', ['no2'])
.setChartType('LineChart')
.setOptions({
title: 'Sentinel-5P:澳大利亚山火期间NO2浓度变化(2019-2020)',
hAxis: {
title: '月份',
slantedText: true,
slantedTextAngle: 45
},
vAxis: { title: 'NO2浓度 (mol/m)' },
lineWidth: 2,
pointSize: 5,
series: {
0: { color: 'green' },
},
legend: { position: 'none' }
});
print('=== NO2时间序列图表 ===');
print(no2Chart);
//////////////////////////////////////////////////////////////////////////////////
// 第三部分:Sentinel-5P CO空间分布(山火期间)
//////////////////////////////////////////////////////////////////////////////////
/*
本部分可视化山火高峰期(2019年12月15日至2020年1月10日)一氧化碳的地理分布。
高浓度区域指示活跃的火点和烟雾流动路径。
*/
var collection_CO_fire = ee.ImageCollection('COPERNICUS/S5P/NRTI/L3_CO')
.select('CO_column_number_density')
.filterBounds(roi)
.filterDate(fireStart, fireEnd)
.mean();
var clip_CO = collection_CO_fire.clip(roi);
// CO可视化参数 (mol/m)
var co_viz = {
min: 0,
max: 0.05,
palette: ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']
};
Map.addLayer(clip_CO, co_viz, 'S5P CO(山火期间)', true, 0.7);
//////////////////////////////////////////////////////////////////////////////////
// 第四部分:Sentinel-5P NO2空间分布(山火期间)
//////////////////////////////////////////////////////////////////////////////////
/*
本部分可视化山火高峰期二氧化氮的地理分布。NO2水平可以指示燃烧力度
和火灾期间大气化学的变化。
*/
var collection_NO2_fire = ee.ImageCollection('COPERNICUS/S5P/NRTI/L3_NO2')
.select('NO2_column_number_density')
.filterBounds(roi)
.filterDate(fireStart, fireEnd)
.mean();
var clip_NO2 = collection_NO2_fire.clip(roi);
// NO2可视化参数 (mol/m)
var no2_viz = {
min: 0,
max: 0.0002,
palette: ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']
};
Map.addLayer(clip_NO2, no2_viz, 'S5P NO2(山火期间)', false, 0.7);
//////////////////////////////////////////////////////////////////////////////////
    

第五部分:Sentinel-5P气溶胶指数(颗粒物代理指标)

    ////////////////////////////////////////////////////////////////////////////////////
    /*
    吸收性气溶胶指数作为颗粒物和烟雾气溶胶的代表指标。正值的AAI表明存在
    吸收性气溶胶,例如由生物质燃烧产生的烟雾。这在追踪森林火灾烟雾的分布
    范围和传播路径中极为关键。
    */
    var sentinel5p_aer = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_AER_AI')
    .select('absorbing_aerosol_index')
    .filterDate('2019-12-01', fireEnd)
    .filterBounds(geometry)
    .mean();
    // 气溶胶指数可视化参数
    var aer_viz = {
    min: -1,
    max: 3.0,
    palette: ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']
    };
    var sent_aer = sentinel5p_aer.clip(geometry);
    Map.addLayer(sent_aer, aer_viz, 'S5P气溶胶指数', true, 0.7);
    ////////////////////////////////////////////////////////////////////////////////////
    

第六部分:Landsat 8火灾影像分析

    ////////////////////////////////////////////////////////////////////////////////////
    /*
    Landsat 8 提供了高分辨率(30米)的光学图像,用于火灾的可视化展示。通过使用
    假彩色合成(短波红外、近红外、红色波段),可以更清晰地识别出活跃的火点和烧毁区,
    有助于确定受损区域。
    */
    // 定义Landsat 8 Collection 2数据集
    var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2');
    // 筛选火灾期间的Landsat 8数据(云量小于30%)
    var landsatFire = l8.filterDate(fireStart, fireEnd)
    .filterBounds(roi)
    .filterMetadata('CLOUD_COVER', 'LESS_THAN', 30);
    /**
    * 应用Collection 2 Level 2产品的比例因子
    * @param {ee.Image} image - 输入图像
    * @returns {ee.Image} 应用比例因子后的图像
    */
    function applyScaleFactors(image) {
    var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
    var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
    return image.addBands(opticalBands, null, true)
    .addBands(thermalBands, null, true);
    }
    // 对所有图像应用比例因子
    var landsatFireScaled = landsatFire.map(applyScaleFactors);
    // 可视化真彩色(红色、绿色、蓝色波段)
    Map.addLayer(landsatFireScaled.median().clip(roi),
    {min: 0, max: 0.3, bands: ['SR_B4', 'SR_B3', 'SR_B2']},
    'Landsat 8 真彩色', false);
    /**
    * 可视化假彩色(短波红外-近红外-红色波段:适合火点和烧毁区检测)
    * 活跃火点呈现为明亮的红色/橙色,烧毁区则显示为深色
    */
    Map.addLayer(landsatFireScaled.median().clip(roi),
    {min: 0, max: 0.5, bands: ['SR_B7', 'SR_B6', 'SR_B4']},
    'Landsat 8 假彩色(火灾)', true);
    print('Landsat 8 图像数量:', landsatFire.size());
    ////////////////////////////////////////////////////////////////////////////////////
    

第七部分:MODIS火灾数据 - 火辐射功率(FRP)

    /*
    MODIS提供1公里分辨率的每日火灾探测。最高火辐射功率显示火灾的热能强度,
    以兆瓦(MW)为单位测定。较高的FRP数值表明更为剧烈的火灾。这些资料有助于
    辨识活跃火点的位置及其相对强度。
    */
    var modisFire = ee.ImageCollection("MODIS/006/MOD14A1")
    .filterDate(fireStart, fireEnd)
    .select("MaxFRP")
    .filterBounds(roi)
    .max();
    var modisFire_roi = modisFire.clip(roi);
    // 可视化火点(二值:检测到火点或未检测到)
    Map.addLayer(modisFire_roi.gt(0), {palette: "red"}, "MODIS火点检测", true);
    // 可视化火灾强度(渐变尺度)
    var frp_viz = {
    min: 0,
    max: 500,
    palette: ['yellow', 'orange', 'red', 'darkred']
    };
    Map.addLayer(modisFire_roi, frp_viz, 'MODIS火辐射功率', false);
    

第八部分:数据导出和统计分析

    /**
    * 导出山火期间污染物浓度数据
    * 用于后续的环境影响评估和科研
    */
    Export.image.toDrive({
    image: clip_CO,
    description: 'Australia_Bushfire_CO_2019_2020',
    folder: 'Bushfire_Analysis',
    region: roi,
    scale: 5000,
    maxPixels: 1e9
    });
    Export.image.toDrive({
    image: clip_NO2,
    description: 'Australia_Bushfire_NO2_2019_2020',
    folder: 'Bushfire_Analysis',
    region: roi,
    scale: 5000,
    maxPixels: 1e9
    });
    // 添加研究区域边界
    Map.addLayer(roi, {color: 'white'}, '研究区域边界');
    // 输出分析总结
    print('=== 澳大利亚山火分析总结 ===');
    print('分析时间段: 2019年1月 - 2020年12月');
    print('山火高峰期: 2019年12月15日 - 2020年1月10日');
    print('监测污染物: CO, NO2, 气溶胶指数');
    print('数据源: Sentinel-5P, Landsat 8, MODIS');
    技术手段与科学价值
    1. 多源数据整合分析
    卫星数据协作
    :Sentinel-5P
    :高精准度大气成分监测(CO、NO2、气溶胶)
    Landsat 8
    :高解析度火点和烧伤区域识别
    MODIS
    :每日火点监测和火强度量化
    2. 时间序列分析
    长期趋势监测
    :24个月连续监测(2019-2020)
    山火前后污染物浓度比较
    季节变化模式识别
    3. 空间分布特点
    污染物传播分析
    :CO和NO2的空间差异
    烟雾流动路径
    区域影响范围评估
    主要发现与科学意义
    1. 污染物排放特性
    CO峰值
    :山火期间CO浓度明显上升,反映出生物燃烧的强度
    NO2变化
    :指示高温燃烧过程和大气化学反应
    气溶胶扩散
    :烟尘颗粒的远程传输证据
    2. 环境影响评估
    空气质量下降
    :污染物浓度超过安全标准
    生态影响
    :烧伤区域和生态系统损害
    气候变化
    :温室气体和气溶胶的气候效果
    此分析系统为了解大规模山火对大气环境的影响提供了有力的科学工具,在全球变暖加剧的背景下具有重要的应用价值。
    结果
    
    
    参考
    https://ieeexplore.ieee.org/xpl/conhome/10490313/proceeding
    
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群