当前位置: 首页 > news >正文

甲烷浓度时空演变趋势分析与异常值计算(附下载脚本)

甲烷是继二氧化碳之后最重要的温室气体之一,其增温效应强、生命周期短,对近几十年的气候变化影响尤为显著。通过 Sentinel-5P 卫星的高分辨率观测数据,借助 Google Earth Engine 的时空分析能力,我们能够在区域和长期尺度上追踪甲烷浓度的变化轨迹,识别异常与趋势。这不仅有助于揭示能源消耗、农业排放与大气过程之间的关系,也为碳中和战略评估、空气质量改善和极端气候预警提供了关键的科学支撑。

01

研究意义

甲烷(CH₄)作为一种强效温室气体,其 温室效应潜能是二氧化碳的 28 倍以上,在短期气候变化中发挥着至关重要的作用。不同于二氧化碳的“长寿命效应”,甲烷在大气中的寿命约为 10 年,这意味着其浓度变化对 近几十年的气候演变有更直接的影响。

  • 全球背景:联合国 IPCC 报告指出,甲烷排放削减是控制全球升温最有效的措施之一。

  • 中国情境:中国作为世界上最大的农业国家和能源消费国,甲烷排放主要来源于 稻田、畜牧业、垃圾填埋场以及煤矿开采。对甲烷时空变化的精准监测,对“双碳战略”(碳达峰、碳中和)和温室气体减排政策具有重要意义。

  • 研究价值:通过卫星遥感数据(Sentinel-5P),我们能够在全球和区域尺度上动态追踪甲烷浓度的变化规律,并结合异常与趋势分析,识别潜在的“排放热点”与“异常时段”。

简而言之,掌握甲烷浓度的时空格局 = 理解气候风险的重要钥匙

02

脚本内容概览

本期教程基于 Google Earth Engine(GEE)平台,提供了一段可以直接运行的脚本。首先调用 Sentinel-5P 卫星的甲烷浓度产品(CH₄ column volume mixing ratio),研究范围既可以设为全国(如中国),也可以灵活选择某个省份或城市作为 ROI(Region of Interest)。

在此基础上,脚本会自动生成 2020–2023 的逐月甲烷浓度序列,并将结果绘制成时间序列图表,直观展示浓度随时间的波动。与此同时,我们还计算整体平均浓度,并将其与逐月数据对比,从而识别哪些月份出现了明显的偏高或偏低,形成一条异常值序列。为了进一步揭示长期演变趋势,脚本引入 Kendall’s τ 方法,对浓度变化进行统计检验,并以地图形式直观呈现甲烷在不同区域的“上升”与“下降”。

最后,所有的时间序列结果都可以一键导出为 CSV 文件,方便在 Python、R 或 Excel 中做更深入的分析与建模。

通过这套脚本,研究者不仅能在 GEE 平台上实现可视化探索,还能获得可下载的数据成果,真正做到科研与应用两不误。

03

代码基础拆解

下面以核心模块为例,逐步讲解:

  1. 行政区划加载

var provinces = ee.FeatureCollection("FAO/GAUL/2015/level1")    .filter(ee.Filter.eq('ADM0_NAME', 'China'));

选择中国作为研究范围。若研究省份级别,可以改成 "Beijing""Guangdong" 等。

2. 数据加载与筛选

这里我们从 Sentinel-5P OFFL 数据库 中提取甲烷浓度,并按时间、空间范围筛选。

var sen5 = ee.ImageCollection("COPERNICUS/S5P/OFFL/L3_CH4")    .select(['CH4_column_volume_mixing_ratio_dry_air'], ['methane'])    .filterDate(time_start, time_end)    .filterBounds(roi);

3. 构建时间序列逐月平均处理,得到时间序列,便于后续制图。

var methane_monthly = ee.ImageCollection(  years.map(function(year) {    return months.map(function(month) {      var monthly = sen5.filter(ee.Filter.calendarRange(year, year, 'year'))                        .filter(ee.Filter.calendarRange(month, month, 'month'))                        .mean();      var date = ee.Date.fromYMD(year, month, 1);      return monthly.set('system:time_start', date.millis());    });  }).flatten());

4. 异常值计算

每个月减去长期平均值,突出显示“异常月份”。var anomaly = methane_monthly.map(function(img) {

  return img.subtract(ave).rename('anomaly')            .copyProperties(img, img.propertyNames());});

5. 趋势检测

一行代码就能实现趋势分析,结果可视化后可以看出哪里甲烷浓度有 显著上升 或 下降

var trend = methane_monthly.reduce(ee.Reducer.kendallsCorrelation());

04

结果展示

  1. 时间序列折线图:展示 2020–2023 中国甲烷浓度变化,是否存在明显的季节波动?

  2. 异常值柱状图:直观显示哪些月份的甲烷浓度“异常偏高”或“偏低”。

  3. 平均空间分布图:绘制中国甲烷浓度的空间格局。

  4. 趋势分析图:标出浓度上升/下降的区域,揭示区域排放差异。

这些可视化结果让科研人员与公众都能快速理解数据的背后含义。

图片

图片

图片

图片

<<  滑动查看下一张图片  >>

图1:月均甲烷浓度(蓝色折线图)

整体趋势:
从 2020 年初到 2023 年底,北京的甲烷浓度呈现 逐步上升的趋势

2020 年初浓度约在 1850 ppbv 左右;

到 2023 年底已接近 1940–1950 ppbv
这表明在三年间,甲烷浓度整体上升了约 90–100 ppbv,属于显著增加。

波动特征:
曲线并不是单调上升,而是有明显的 周期性起伏

2021 年、2022 年、2023 年都有春夏季小幅回落,秋冬季则普遍升高;

这可能与 采暖季能源消耗 或 气象条件(逆温层、扩散条件差) 有关。

图2:甲烷异常值序列(橙色柱状图)

2020 年:
甲烷浓度整体 低于长期平均水平,尤其是上半年,异常值最低接近 -40 ppbv
这可能与当时疫情初期社会活动受限、能源消耗减少有关。

2021–2022 年:
浓度开始逐渐回归并超过平均水平。

2021 年整体接近基线(±10 ppbv 波动);

2022 年下半年出现持续正异常,说明甲烷浓度已稳定高于长期平均。

2023 年:
正异常显著增强,从春季到冬季均保持在 +10 ~ +25 ppbv
表明北京在这一年甲烷浓度的“抬升态势”非常明显。

05

拓展方向

在掌握本期脚本的基础上,你可以尝试:

  • 数据拓展

  • 将甲烷与 NO₂、CO、臭氧(O₃) 等污染物数据结合,分析大气化学耦合效应。

  • 融合 ERA5 再分析气象数据,研究温度、风速、边界层高度对甲烷浓度分布的影响。

  • 方法拓展

  • 使用 机器学习算法(如随机森林、XGBoost),预测甲烷浓度的变化趋势。

  • 引入 时序分解方法(STL/SSA),区分长期趋势与季节性信号。

  • 采用 极值理论(EVT),识别极端甲烷排放事件。

  • 应用拓展

  • 服务于 碳中和评估:定量核算区域甲烷排放贡献。

  • 应用于 能源行业监管:分析煤矿区或油气田甲烷泄漏情况。

  • 结合 农业排放,评估稻田甲烷排放与水稻种植季节的关系。

06

一键运行脚本

👉 本期脚本已经在 GEE 平台准备就绪,复制代码即可运行,快速生成 甲烷浓度时序图、异常值序列以及趋势分析地图

建议在运行前调整参数:

regionName:选择具体省份或区域;

time_starttime_end:修改研究时段;

scale:根据研究尺度调整空间分辨率。

导出的结果可以在 Google Drive 里查看,也可继续在 Python/R 中进行更深层次的数据挖掘。

07

 总结

本期教程带大家从 Sentinel-5P 甲烷观测数据 出发,学习如何用 GEE 平台实现 时序构建 → 异常检测 → 趋势分析 → 结果导出 的全流程。

通过这一套方法,你不仅能清晰掌握 2020–2023 中国甲烷浓度的时空格局,还能够拓展到 多污染物耦合分析、碳中和评估以及极端事件监测 等更前沿的研究方向。

/*Sentinel-5P CH4 */// 1. 加载行政区边界(省份级)var provinces = ee.FeatureCollection("FAO/GAUL/2015/level1")  .filter(ee.Filter.eq('ADM0_NAME', 'China'));// 2. 选择一个省份,比如 "Beijing"var regionName = "Beijing";var roi = provinces.geometry(); // 整个中国Map.centerObject(roi, 6);Map.addLayer(roi, {color: 'red'}, "Selected Region: " + regionName);// 3. 时间范围var time_start = '2020-01-01';var time_end   = '2024-01-01';// 4. 加载 S5P 甲烷数据var sen5 = ee.ImageCollection("COPERNICUS/S5P/OFFL/L3_CH4")  .select(['CH4_column_volume_mixing_ratio_dry_air'], ['methane'])  .filterDate(time_start, time_end)  .filterBounds(roi);// 5. 构建月均时间序列var years  = ee.List.sequence(2020, 2023);var months = ee.List.sequence(1, 12);var methane_monthly = ee.ImageCollection(  years.map(function(year) {    return months.map(function(month) {      var monthly = sen5        .filter(ee.Filter.calendarRange(year, year, 'year'))        .filter(ee.Filter.calendarRange(month, month, 'month'))        .mean();      var date = ee.Date.fromYMD(year, month, 1);      return monthly        .set('system:time_start', date.millis())        .set('system:index', date.format('YYYY-MM-dd'));    });  }).flatten());// 6. 计算整体平均var ave = methane_monthly.mean();// 7. 计算异常var anomaly = methane_monthly.map(function(img) {  return img.subtract(ave).rename('anomaly')    .copyProperties(img, img.propertyNames());});// ---------------------- 可视化部分 ----------------------// A) 时间序列折线图(甲烷浓度)var chart1 = ui.Chart.image.series({  imageCollection: methane_monthly,  region: roi,  reducer: ee.Reducer.mean(),  scale: 7000,  xProperty: 'system:time_start'}).setOptions({  title: 'Monthly Mean CH4 in ' + regionName,  vAxis: {title: 'Methane (ppbv)'},  hAxis: {title: 'Date'}});print(chart1);// B) 时间序列柱状图(异常值)var chart2 = ui.Chart.image.series({  imageCollection: anomaly,  region: roi,  reducer: ee.Reducer.mean(),  scale: 7000,  xProperty: 'system:time_start'}).setChartType('ColumnChart')  .setOptions({    title: 'CH4 Anomaly in ' + regionName,    vAxis: {title: 'Anomaly (ppbv)'},    hAxis: {title: 'Date'},    colors: ['#d95f0e']  });print(chart2);// C) 平均浓度空间分布var vizMean = {  min: 1750,  max: 1900,  palette: ['blue', 'cyan', 'green', 'yellow', 'red']};Map.addLayer(ave.clip(roi), vizMean, "Mean CH4 (2020–2023)");// D) 某个月份的空间分布(例如 2021-01)var oneMonth = methane_monthly.filterDate('2021-01-01', '2021-02-01').first();Map.addLayer(oneMonth.clip(roi), vizMean, "CH4 Example (Jan 2021)");// E) 趋势分析(Kendall’s τ)var trend = methane_monthly.reduce(ee.Reducer.kendallsCorrelation());Map.addLayer(trend.select('methane_tau').clip(roi),  {min: -0.5, max: 0.5, palette: ['blue','white','red']},  'CH4 Trend');// ---------------------- 数据导出 ----------------------// 导出时间序列为 CSVvar tsTable = ee.FeatureCollection(methane_monthly.map(function(img) {  var meanVal = img.reduceRegion({    reducer: ee.Reducer.mean(),    geometry: roi,    scale: 7000  }).get('methane');  return ee.Feature(null, {    date: ee.Date(img.get('system:time_start')).format('YYYY-MM-dd'),    methane: meanVal,    region: regionName  });}));Export.table.toDrive({  collection: tsTable,  description: 'CH4_TimeSeries_' + regionName,  fileFormat: 'CSV',  folder: 'CH4_China'});

http://www.xdnf.cn/news/1424071.html

相关文章:

  • 基于docker-compose搭建EFK(Elasticsearch+fluentd+kibana)的日志平台
  • 2025年工作后值得考的财会行业证书推荐,尤其是第二个!
  • 从网络层接入控制过渡到应用层身份认证的过程
  • 如何在SptingBoot项目中引入swagger生成API文档
  • HarvardX TinyML小笔记2(番外3:数据工程)
  • 技术速递|构建你的第一个 MCP 服务器:如何使用自定义功能扩展 AI 工具
  • Linux之Shell编程(四)函数、数组、正则
  • PostgreSQL备份指南:逻辑与物理备份详解
  • EPLAN如何添加接触器辅助触头 | 解决触点不足问题详解4----使用部件组
  • 三、Gitee平台使用指南
  • 在Lumerical FDTD中,磁偶极子通常用于激发TE模式,而电偶极子用于激发TM模式(文心一言)
  • chrome好用的浏览器插件
  • 51.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--登录注册扩展
  • UE角色取消被Decal影响
  • 在 PHP 应用中处理限流和 API 节流:扩展、防滥用的最佳实践
  • 【数据可视化-102】苏州大学招生计划全解析:数据可视化的五大维度
  • 预告:AI赋能IT服务管理实践 |2025 “数字化时代的IT服务管理“Meetup-深圳站(9月20日)
  • [吾爱出品] PDF文件加密解密工作,附带源码。
  • GitHub CLI (gh) 全面指南:终端中的 GitHub 工作流革命
  • ServBay 是一款集成式、图形化的本地 Web 开发环境工具,专为 macOS 和 Windows 系统设计
  • 什么是最大熵强化学习?
  • Linux笔记---计算机网络概述
  • Python上下文管理器与资源管理
  • WEEX:从某DEX代币暴涨看加密交易选择
  • 【Linux】模拟实现Shell(下)
  • 快递地址归类排序实现(Java Python)
  • 查看服务器设备是否为物理机
  • Linux内核进程管理子系统有什么第三十九回 —— 进程主结构详解(35)
  • 算法练习——169.多数元素
  • 教育项目管理工具新趋势:可视化与自动化如何提升效率?