OCO-2 卫星CO2峰值检测器。
项目描述
OCO-2 CO2峰值检测器
概述
我们项目的目标是根据NASA的OCO-2卫星测量的碳浓度数据,在地球上定位CO2排放。
我们与以下机构合作:IGN的Matthieu Porte,法国生态部Marie Heckmann
- IPSL的Frederic Chevallier,他是Observing carbon dioxide emissions over China’s cities with the Orbiting Carbon Observatory-2一文的作者之一
我们的输入
1/ OCO-2卫星数据
NASA的OCO-2卫星(轨道碳观测卫星)环绕地球运行,并测量大气中的CO2浓度。
以下是OCO-2卫星在2019年12月测量的CO2浓度可视化。
卫星使用光谱仪检测大气中的CO2,如下面的图片所示。
更多信息请参阅:https://oco.jpl.nasa.gov/instrument/
卫星测量CO2浓度的局限性
- 卫星无法穿透云层或雾气;
- 它在地面和水面上工作方式不同;
- 卫星的扫描宽度相当窄(只有10公里),如下面的图片所示;
- 随着卫星环绕地球,覆盖范围是部分。
!!
关于任务的更多信息,请访问https://earth.esa.int/web/eoportal/satellite-missions/o/oco-2。
NASA制作了一张全球CO2图像(见下文),然而这只是一个数据外推,并非卫星真正看到的。
2/ 已知CO2排放数据
- 全球大气研究排放数据库(EDGAR)的CO2排放数据。对于能源相关行业,活动数据主要基于IEA(2017)的能源平衡统计数据,而农业部门的活动数据主要来源于FAO(2018)。排放网格的空间分配是基于具有能源和制造设施位置、道路网络、航线、人口密度和农业用地等随时间变化的空间代理数据集进行的。来源:https://edgar.jrc.ec.europa.eu/overview.php?v=50_GHG
- 世界资源研究所提供了一个基于不同一次能源发电的火力发电厂清单。我们筛选了这个清单,只保留在燃烧过程中释放CO2的化石一次能源(天然气、石油和煤炭)。来源:http://datasets.wri.org/dataset/globalpowerplantdatabase
- CO2排放的其他来源正在研究中。
我们所做的工作
第一步:从O-CO2检测峰值并从清单数据中推断
-
O-CO2数据峰值检测,两步法
- 步骤1:通过高斯拟合(curve_fit)识别局部“峰值”;考虑到O-CO2数据的内在复杂性,特别是:全球背景CO2水平的方差很大,云雾等导致的羽流观测的狭窄性和不完整性...
- 步骤2:消除无关的峰值,仅保留“真实”异常:到目前为止,通过相当剧烈且手动的方法,有规则地仅保留清晰的Gaussians;目标是利用基于算法的异常检测来改进这部分。
-
从清单数据汇总已知的CO2来源:使用EDGAR和世界资源研究所。
-
使用风矢量找到距离峰值最近的清单。
-
将峰值与已知来源的排放进行比较并确认。
第二步:使用监督模型从清单数据中学习检测峰值[未开始]
- 使用清单数据完整区域,让监督模型学习OCO2数据中的峰值。
动态可视化数据
- 在一个综合地图上显示结果,跨越卫星和清单数据。
我们所取得的成果
- 从EDGAR和世界资源研究所收集数据并在地图上绘制。
- 从NASA获取原始卫星数据,并将其与我们所需的数据合并成月度数据集。
- 对每个轨道进行高斯曲线拟合并保存结果。
- 交互式仪表盘以在网络上分享我们的工作。
以下是一个找到的高斯峰值的示例
和网站上的结果
我们需要帮助
- 更好的峰值检测:到目前为止,我们正在拟合高斯曲线以检测相关峰值。有两个问题
- 我们使用SciKit Learn curve_fit。你知道更好的算法或如何调整curve_fit的参数吗?
- 我们正在寻找其他方法来检测浓度中的异常(我们的“峰值”)- 有什么想法吗?
- 风建模以估计检测到的浓度的排放 - 有什么想法?(反演高斯羽流模型)
Git目录结构
- /dataset包含OCO-2数据清单数据的样本;重要:所有数据都在共享的Open Stack存储中,而不是在GitHub上。
- /notebooks包含团队制作的笔记本;
- /pipeline包含用于处理NASA数据的脚本。
- /oco2peak包含模块
警告:该项目使用NBDev,因此文档(包括此README!)和模块都是从笔记本生成的。因此,你只需要编辑笔记本。
Open Stack目录结构
我们不存储来自NASA的原版OCO-2文件。
- /emissions/ 包含所有潜在的排放源:工厂、发电厂、城市...
- /soudings/ 包含从NASA NC4文件中提取的原始特征的CSV文件。
- /peaks-detected/ 包含卫星轨道数据中找到的所有峰值。
- /peaks-detected-details/ 包含所有检测到的峰值完整数据的JSON文件。
安装
仅Python包
如果您只想使用我们的模块进行自己的项目: pip install oco2peak
使用Docker
仅用于
docker-compose up
开发环境
docker-compose -f docker-compose-dev.yml up
- 前端在 http://localhost:7901
- Jupyter Lab 在 http://localhost:7988
数据集访问
您需要一个包含token的config.json文件以访问您的OpenStack
{
"swift_storage": {
"user":"B..r",
"key":"ep..ca",
"auth_url":"https://auth.cloud.ovh.net/v3/",
"tenant_name":"8..8",
"auth_version":"3",
"options" : {
"region_name": "GRA"
},
"base_url" : "https://storage.gra.cloud.ovh.net/v1/AUTH_2...d/oco2/"
}
}
config = '../configs/config.json'
datasets = Datasets(config)
datasets.get_files_urls(prefix="/datasets/oco-2/peaks-and-invent/", pattern='1908')
['https://storage.gra.cloud.ovh.net/v1/AUTH_2aaacef8e88a4ca897bb93b984bd04dd/oco2//datasets/oco-2/peaks-and-invent/peaks_and_invent_1908.csv']
datasets.get_files_urls(prefix="/map/peaks_map/", pattern='1908')
['https://storage.gra.cloud.ovh.net/v1/AUTH_2aaacef8e88a4ca897bb93b984bd04dd/oco2//map/peaks_map/peaks_capture_map_1908.html']
上传文件
datasets.upload(mask='../*.md', prefix="/Trash/",content_type='text/text')
构建文档和模块
make all
或者如果您正在使用Docker
docker exec -it batch7_satellite_ges_oco2-dev_1 make all
处理NASA文件
在 docker-compose-dev.yml
中,将 source: /media/NAS-Divers/dev/datasets/
更改为您的NC4文件路径。
然后运行: docker-compose -f docker-compose-dev.yml up
在另一个终端中运行
docker exec -it batch7_satellite_ges_oco2-dev_1 /bin/bash
python pipeline/01_extract_nc4_to_csv.py
python pipeline/02_find_peak_in_all_files.py
python pipeline/03_upload_json_to_the_cloud.py
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
oco2peak-0.0.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d6a69cd700cda0c64bf16ba6964a569dc5ab43e4147fb7f40fc2759770bb5555 |
|
MD5 | 4e0c13d24306bd82a6512c37e4237815 |
|
BLAKE2b-256 | fce0c251a542fb5acd04cfbd98e458e350dd00e2354a336be24bb0e756bc6b17 |
oco2peak-0.0.4-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 028cd01b7ff3ed9ea288e3358a6f12b8a9de1564961b8cfa182f8c285b175ae1 |
|
MD5 | d0a6432ee286b725416810303d63a7a8 |
|
BLAKE2b-256 | cb958b58fff170f4677bcc30882ebd71263ae195f8bafb8e0def2d77d8a298c1 |