当前位置: 首页 > 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.dtcms.com/a/362228.html

相关文章:

  • 洛谷 P5836 [USACO19DEC] Milk Visits S-普及/提高-
  • 基于MCP架构的OpenWeather API服务端设计与实现
  • jetson开发板Ubuntu系统Docker中使用 MySQL 数据库详解-安装与配置指南
  • Python上下文管理器与资源管理
  • 基于51单片机停车场车位引导系统设计
  • 四个典型框架对比
  • 软考-操作系统-错题收集(2)文件系统的多级索引结构
  • 【重学MySQL】九十七、MySQL目录结构与文件系统解析
  • 二叉树核心操作知识点整理
  • 大模型微调显存内存节约方法
  • Java实现的IP4地址合法判断新思路
  • GPT - 5 技术前瞻与开发者高效接入路径探索​
  • 高性能客服系统源码实现
  • 文件上传漏洞基础及挖掘流程
  • 2013 NeuralIPS Translating Embeddings for Modeling Multi-relational Data
  • JAVA后端开发——MyBatis 结合 MySQL JSON 类型查询详解
  • vue组件中实现鼠标右键弹出自定义菜单栏
  • 智慧交通时代,数字孪生为何成为关键力量?
  • Map接口
  • 基于若依框架前端学习VUE和TS的核心内容
  • 手搓3D轮播图组件以及倒影效果
  • 基于STM32的ESP8266连接华为云(MQTT协议)
  • leetcode46.全排列
  • java web 练习 简单增删改查,多选删除,包含完整的sql文件demo。生成简单验证码前端是jsp
  • (Mysql)MVCC、Redo Log 与 Undo Log
  • C#知识学习-012(修饰符)
  • Python OpenCV图像处理与深度学习:Python OpenCV边缘检测入门
  • FastLED库完全指南:打造炫酷LED灯光效果
  • 【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​
  • 【设计模式】--重点知识点总结