news 2026/4/18 20:43:40

用GEE和Sentinel-5P数据,5分钟搞定城市空气质量变化趋势分析(以NO2、O3为例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用GEE和Sentinel-5P数据,5分钟搞定城市空气质量变化趋势分析(以NO2、O3为例)

城市空气质量动态监测:基于GEE与Sentinel-5P的高效分析实战

清晨打开天气预报APP时,那些跳动的空气质量指数背后,其实隐藏着卫星每天扫描地球大气层产生的海量数据。作为环境研究者,我们完全可以通过Google Earth Engine(GEE)平台直接调用Sentinel-5P卫星的实时观测数据,用代码代替传统手工处理,快速捕捉城市上空NO2和O3的微妙变化。本文将带你体验这个高效工作流——无需下载TB级原始数据,不用搭建本地计算环境,5分钟生成专业级趋势图表的技术魔法。

1. 环境准备与数据基础

1.1 GEE平台的核心优势

与传统遥感数据处理相比,GEE的云端计算模式彻底改变了游戏规则。当我们需要分析某城市2020-2023年的空气质量变化时:

  • 存储零负担:所有Sentinel-5P数据已预处理并存储在Google云服务器
  • 算力无上限:调用ee.ImageCollection时的并行计算速度是本地MATLAB的百倍
  • 即时可视化:内置的ui.Chart模块可直接生成交互式时间序列图

提示:注册GEE账号时建议使用机构邮箱,教育用户通常能获得更高频的API调用权限

1.2 Sentinel-5P数据特性解析

这颗专门监测大气成分的卫星,其TROPOMI传感器提供了这些关键参数:

气体类型数据层名称单位典型城市浓度范围
NO2NO2_column_number_densitymol/m²0.0001-0.0005
O3O3_column_number_densitymol/m²0.12-0.15
SO2SO2_column_number_densitymol/m²0.00001-0.0001
// 验证数据可用性的基础代码 var testCollection = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_NO2') .filterDate('2023-01-01', '2023-01-31'); print('一月数据量:', testCollection.size());

2. 城市边界数据融合技巧

2.1 矢量数据精准匹配

分析北京五环内空气质量时,粗糙的矩形研究区会导致数据失真。推荐两种获取城市边界的方法:

  1. GEE内置数据集:加载FAO/GAUL/2015/level2行政边界
  2. 自定义GeoJSON:从OpenStreetMap导出后通过ee.FeatureCollection上传
// 加载北京市辖区边界示例 var beijing = ee.FeatureCollection('FAO/GAUL/2015/level2') .filter(ee.Filter.eq('ADM1_NAME', 'Beijing')); Map.addLayer(beijing, {color: 'red'}, 'Beijing Boundary');

2.2 时空范围智能筛选

针对不同分析目的,时间粒度的选择至关重要:

  • 突发事件响应:使用NRTI近实时数据(3小时延迟)
  • 长期趋势分析:选择OFFL再处理数据(经过质量校正)
// 最佳实践:创建日期序列过滤器 var dateRange = ee.DateRange('2020-01-01', '2023-12-31'); var yearFilter = ee.Filter.calendarRange(2020, 2023, 'year'); var monthFilter = ee.Filter.calendarRange(6, 8, 'month'); // 夏季分析

3. 空气质量指标深度分析

3.1 NO2时空变化解码

作为交通排放的指示剂,NO2浓度在工作日早高峰会出现典型峰值。这段代码可提取二环内NO2的昼夜差异:

var no2Daily = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_NO2') .filterBounds(secondRingRoad) .select('NO2_column_number_density'); var timeSeries = no2Daily.map(function(image) { var date = image.date(); var hour = date.get('hour'); var isWeekday = date.getDay().gte(1).and(date.getDay().lte(5)); return image.set('hour', hour).set('isWeekday', isWeekday); }); // 生成小时均值统计图表 var chart = ui.Chart.image.seriesByRegion({ imageCollection: timeSeries, regions: secondRingRoad, reducer: ee.Reducer.mean(), band: 'NO2_column_number_density', scale: 1000, xProperty: 'hour', seriesProperty: 'isWeekday' }).setOptions({ title: '二环内NO2浓度小时变化', hAxis: {title: '小时'}, vAxis: {title: 'NO2浓度 (mol/m²)'}, lineWidth: 2, series: { 0: {color: 'red', lineDash: [4, 4]}, // 周末 1: {color: 'blue'} // 工作日 } }); print(chart);

3.2 O3与气象因子的耦合分析

不同于NO2,臭氧浓度往往与温度正相关。这个工作流整合了ERA5气象数据:

var ozone = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_O3'); var temperature = ee.ImageCollection('ECMWF/ERA5/DAILY'); var joinedCollection = ee.Join.saveAll('matches').apply({ primary: ozone.filterDate('2022-06-01', '2022-08-31'), secondary: temperature.filterDate('2022-06-01', '2022-08-31'), condition: ee.Filter.equals({ leftField: 'system:time_start', rightField: 'system:time_start' }) }); var correlationChart = ui.Chart.image.doySeriesByYear({ imageCollection: joinedCollection.map(function(image) { var matches = ee.ImageCollection.fromImages(image.get('matches')); var temp = matches.first().select('mean_2m_air_temperature'); return image.addBands(temp); }), bandName: ['O3_column_number_density', 'mean_2m_air_temperature'], region: studyArea, regionReducer: ee.Reducer.mean(), scale: 1000 }).setOptions({ title: '夏季O3浓度与气温相关性', series: { 0: {targetAxisIndex: 0, color: 'purple'}, 1: {targetAxisIndex: 1, color: 'orange'} }, vAxes: { 0: {title: 'O3浓度 (mol/m²)'}, 1: {title: '温度 (°C)'} } });

4. 工业事件的可视化追踪

4.1 疫情期间排放变化

2020年春季的封锁措施在卫星数据中留下清晰信号。这段代码对比了疫情前后同期数据:

var preCovid = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_NO2') .filter(ee.Filter.date('2019-02-15', '2019-04-15')); var duringCovid = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_NO2') .filter(ee.Filter.date('2020-02-15', '2020-04-15')); var diff = duringCovid.mean() .subtract(preCovid.mean()) .clip(cityBoundary); var diffViz = { min: -0.0002, max: 0.0002, palette: ['red', 'white', 'blue'] }; Map.addLayer(diff, diffViz, 'NO2浓度变化');

4.2 节假日效应分析

春节期间的工业活动停滞会显著改变空气成分构成。使用reduceRegion进行多年度对比:

var springFestival = ee.Filter.or( ee.Filter.date('2019-02-04', '2019-02-10'), ee.Filter.date('2020-01-24', '2020-01-30'), ee.Filter.date('2021-02-11', '2021-02-17') ); var festivalStats = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_SO2') .filter(springFestival) .map(function(image) { var stats = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: industrialZone, scale: 1000 }); return image.set(stats); }); print(ui.Chart.feature.byFeature(festivalStats, 'system:time_start', ['SO2_column_number_density']));

5. 自动化报告生成策略

5.1 动态仪表板构建

将上述分析整合为交互式面板,使用ui.Panel实现一键刷新:

var controlPanel = ui.Panel([ ui.Label('时间范围选择'), ui.DatePicker({id: 'startDate', value: '2020-01-01'}), ui.DatePicker({id: 'endDate', value: '2020-12-31'}), ui.Button('更新图表', updateCharts) ]); function updateCharts() { var start = controlPanel.widgets().get(1).getValue(); var end = controlPanel.widgets().get(2).getValue(); // 动态更新所有图表 }

5.2 数据导出最佳实践

当需要本地进一步分析时,这些方法能保持数据完整性:

  1. CSV导出:使用Export.table.toDrive输出统计结果
  2. GeoTIF导出:对空间分布数据用Export.image.toDrive
  3. 自动命名技巧:在导出任务中添加时间戳变量
// 典型导出配置 Export.table.toDrive({ collection: timeSeriesStats, description: 'NO2_Monthly_Stats', fileFormat: 'CSV', selectors: ['date', 'mean', 'max', 'min'] });

在最近为某环保组织做的咨询项目中,发现将GEE分析结果与地面监测站数据结合时,需要注意卫星过境时间(当地时间上午10:30左右)与地面监测时段的匹配问题。建议在制作对比图表时,统一使用世界协调时(UTC)以避免时区混淆。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 20:29:15

从推理到智能体,大模型强化学习中信用分配机制的演进与突破

在大语言模型(LLM)与强化学习(RL)深度融合的今天,一个核心问题正从幕后走向台前:当模型生成长达数万甚至数百万token的轨迹,或是在复杂环境中完成多轮交互任务时,最终的奖励该如何合…

作者头像 李华
网站建设 2026/4/18 20:24:15

Token解剖:Coin、Token与通证的三位一体

如果你听说过加密货币,多半也听过“Token”这个词。有人叫它“代币”,有人叫它“通证”,还有人干脆不翻译,直接念“投肯”。这三个称呼说的其实是同一件事,但每个词背后的侧重点完全不同。2026年黄仁勋在GTC大会上定义了属于AI行业的“Token经济学”,将Token重新定义为AI…

作者头像 李华
网站建设 2026/4/18 20:23:23

终极网络资源捕获工具:res-downloader完整使用指南

终极网络资源捕获工具:res-downloader完整使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在当今数字内容…

作者头像 李华
网站建设 2026/4/18 20:20:32

3分钟掌握Windows右键菜单管理:告别杂乱菜单的终极方案

3分钟掌握Windows右键菜单管理:告别杂乱菜单的终极方案 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你的Windows右键菜单是不是已经变成了一个&qu…

作者头像 李华