Sentinel-5P遥感数据下载及预处理教程【20250105】

Sentinel-5P是欧空局(Europe Space Agency,ESA)于2017年10月13日发射的一颗全球大气污染监测卫星。卫星搭载了对流层观测仪(Tropospheric Monitoring Instrument,TROPOMI),可以有效的观测全球各地大气中痕量气体组分,包括NO2、O3、SO2、 HCHO、CH4和CO等重要的与人类活动密切相关的指标,加强了对气溶胶和云的观测。

⛄Sentinel-5P数据介绍

👀数据产品

TROPOMI是目前世界上技术最先进、空间分辨率最高的大气监测光谱仪,成像幅宽达2600km,每日覆盖全球各地,成像分辨率达7km×3.5km,ESA提供了L1BL2两种级别的数据下载。L2级数据产品介绍如下表:

官网产品数据介绍:https://sentiwiki.copernicus.eu/web/sentinel-5p

Product typeParameter
L2__O3____Ozone (O3) total column(总柱含量)
L2__O3_TCLOzone (O3) tropospheric column(对流层柱含量)
L2__O3__PROzone (O3) profile(总剖面数据)
L2__NO2___Nitrogen Dioxide (NO2),total and tropospheric columns(总柱和对流层柱含量)
L2__SO2___Sulfur Dioxide (SO2) total column(总柱含量)
L2__CO____Carbon Monoxide (CO) total column(总柱含量)
L2__CH4___Methane (CH4) total column(总柱含量)
L2__HCHO__Formaldehyde (HCHO) total column(总柱含量)
L2__CLOUD_Cloud fraction, albedo, top pressure(云量、反照率、云顶大气压)
L2__AER_AIUV Aerosol Index(紫外区域气溶胶指数)
L2__AER_LHAerosol Layer Height (mid-level pressure)(气溶胶层高度(中等气压))
UV productSurface Irradiance/erythemal dose
L2__NP_BDx, x=3, 6, 7Suomi-NPP VIIRS Clouds(云产品辅助数据)

L2级数据产品根据生产时间/质量分为三种数据流:

  • 近实时数据流(near-real-time,NRTI),卫星成像3小时后即可获取,数据可能不完整或存在质量缺陷。
  • 离线数据流(Offline,OFFL),一般成像后几天即可获得。
  • 再次处理数据流(Reprocessing,RPRO),有些数据可能经过了多次处理,获得的最新的质量最佳的版本。

一般情况下,长期的时序变化研究不可以混用不同级别的数据流,推荐使用最新的RPRO数据以保证数据质量。

👀数据下载

下载教程:Sentinel–哨兵系列数据下载地址及流程更新【202310】

⛄Sentinel-5P数据预处理

本博客以L2级HCHO产品(近实时数据流HCHO总柱含量)为例:

S5P_NRTI_L2__HCHO___20241015T052816_20241015T053316_36303_03_020601_20241015T061049.nc

👀方法1:ENVI处理

  • GLT几何校正法利用输入的几何文件生成一个地理位置查找表文件(Geographic Lookup Table, GLT),从该文件中可以了解到某个初始像元在最终输出结果中实际的地理位置。

  • 地理位置查找表文件是一个二维图像文件,文件中包含两个波段:地理校正影像的行和列。文件对应的灰度值表示原始影像每个像素对应的地理位置坐标信息,用有符号整型储存,它的符号说明输出像元是对应于真实的输入像元,是由邻近像元生成的填实像元(infill pixel)。符号为正时说明使用了真实的像元位置值;符号为负时说明使用了邻近像元的位置值,值为0说明周围7个象元内没有邻近像元位置值。

  • GLT文件包含初始影像每个像元的地理定位信息,它的校正精度很高。避免了通过地面控制点利用二次多项式几何校正法对低分辨率影像数据的处理。

(1)打开步骤:Open as→Generic Formasts→HDF5/NetCDF-4,或者直接将数据文件拖进ENVI。

(2)地理位置数据和浓度产品数据分开读取:将经纬度数据读取成一个图层,将HCHO柱浓度数据读取为另一个图层。

在这里插入图片描述

(3)制作GLT文件,在ENVI工具箱中搜索Build GLT,在弹出的对话框中,Input X Geometry Band选择经度数据,Input Y Geometry Band选择纬度数据。 在接下来的对话框中,投影信息选择WGS-84,Geographic Lat/Lon。

在这里插入图片描述

(4)在Build Geometry Lookup File Parameters对话框中,像元大小选择默认,旋转角度(Rotation)为0(正上方为北)。

在这里插入图片描述

(5)利用GLT文件对HCHO数据进行校正,工具箱中搜索Georeference from GLT,在Input Geometry Lookup File对话框中选择GLT文件,在Input Data File对话框中选择待校正的HCHO数据文件。

在这里插入图片描述
在这里插入图片描述

存在问题:针对ENVI方式的处理结果,小编存在诸多疑问。我们通过ENVI加载数据或者Panoply软件加载数据,获取数据的行列:358×450;但是经过ENVI处理之后,分辨率Pixel: 0.044004 Degrees,Dims: 849 x 527 x 1。(ENVI中列在前,行在后)出现行列数不对应的问题??

👀方法2:Panoply可视化展示

Panoply是一款跨平台的数据可视化软件工具,专门用于绘制地理参考以及其他数组数据,包括netCDF、HDF、GRIB等格式。Panoply运行需要JAVA环境,配置JAVA环境后,解压程序包,双击Panoply.exe即可。

  • 官网下载:https://www.giss.nasa.gov/tools/panoply/

  • 博客下载:遥感数据处理及可视化-第三方辅助工具集

在这里插入图片描述
在这里插入图片描述

👀方法3:S5Processor处理

为了把S5P的NC数据正确转为TIFF数据,试了多种方法,在GitHub上面发现了一个R包:S5Processor

  • S5Processor包地址:https://github.com/MBalthasar/S5Processor

  • R及RStudio下载安装教程:参考博客①、参考博客②、参考博客③

  • R包镜像地址:https://cran.r-project.org/src/contrib/Archive/

(1)首先,这个包需要借助Rtools,下载Rtools,根据自己运行环境选择合适的版本,安装即可。

  • Rtools下载地址:https://cran.r-project.org/bin/windows/Rtools/

(2)提示没有devtools,则直接安装该包即可。

在这里插入图片描述
在这里插入图片描述

(3)安装S5Processor包

devtools::install_github("MBalthasar/S5Processor")

在安装过程中,可能会遇到依赖包缺少的问题,比如maptoolsrgdalrgeos包,需要在R包镜像地址中检索并下载对应版本的包,进行手动安装。

(4)实例代码

基于R语言,使用S5Processor包对S5P数据进行TIFF格式转换,便于在GIS中进行分析。

devtools::install_github("MBalthasar/S5Processor")
library(S5Processor)
library(ncdf4)
library(ggplot2)
library(dismo)
library(maptools)
library(raster)
library(geosphere)
library(rgdal)
library(rgeos)
library(sp)
S5P_HCHO <- S5P_process(input = "D:\\Desktop\\data\\S5P_NRTI_L2__HCHO\\S5P_NRTI_L2__HCHO___20241015T052816_20241015T053316_36303_03_020601_20241015T061049.nc", product = 6)
writeRaster(S5P_HCHO, "D:\\Desktop\\data\\S5P_NRTI_L2__HCHO\\S5P_HCHO_R.tif", format = 'GTiff', overwrite = TRUE)
  • 针对代码中product参数值,相信很多朋友疑惑,如何获取呢??

  • 大部分博客中NO2实例的取值都是一样的(比如39),但是对于其它产品数据如何确定呢??

  • 小编开始也很疑惑,最后通过不断调试代码,能够输出产品列表,判断出对应编号。

(5)转换结果

在这里插入图片描述
在这里插入图片描述

存在问题:针对R包方式的处理结果,小编仍然存在诸多疑问。我们通过ENVI加载数据或者Panoply软件加载数据,获取数据的行列:358×450;但是通过R包方式处理之后,分辨率Pixel: 0.240748 x 0.17972 Degrees,Dims: 155 x 129 x 1。(ENVI中列在前,行在后)依然出现行列数不对应的问题??并且和ENVI处理结果的行列数也不相同??但是两者结果的整体趋势保持一致。

多谢!多谢!
笔者不才,请多交流!!!

欢迎大家关注预览我的博客Blog:HeartLoveLife
能力有限,敬请谅解!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java项目之高校心理教育辅导系统的设计与实现(springboot+mybatis+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 高校心理教育辅导系统的设…

打造三甲医院人工智能矩阵新引擎(一):文本大模型篇--基于GPT-4o的探索

一、引言 当今时代,人工智能技术正以前所未有的速度蓬勃发展,深刻且广泛地渗透至各个领域,医疗行业更是这场变革的前沿阵地。在人口老龄化加剧、慢性疾病患病率上升以及人们对健康需求日益增长的大背景下,三甲医院作为医疗体系的核心力量,承担着极为繁重且复杂的医疗任务。…

美的空气净化器好用吗?拾梧、美的、戴森空气净化器除烟哪个好?

说到二手烟&#xff0c;这可真是个让人头疼的问题&#xff01;它里面含有超过7000种化学物质&#xff0c;形式多样&#xff0c;处理起来比甲醛这些传统污染物难多了。在市场上那么多空气净化器里&#xff0c;要挑一个能真正对付二手烟的&#xff0c;简直就像大海捞针一样难。不…

WebRtc01:课程导学、框架介绍

应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获

电脑steam api dll缺失了怎么办?

电脑故障解析与自救指南&#xff1a;Steam API DLL缺失问题的全面解析 在软件开发与电脑维护的广阔天地里&#xff0c;我们时常会遇到各种各样的系统报错与文件问题&#xff0c;其中“Steam API DLL缺失”便是让不少游戏爱好者和游戏开发者头疼的难题之一。作为一名深耕软件开…

关系数据库查询与优化

关系数据库查询与优化 (1)查询所有没发表过文章的用户名(2)查询得票数大于100的所有文章标题,按得票数倒序排列(3)查询发表文章数大于5,文章平均得票数大于100的用户名,按平均得票数倒序排列(4)表的主键、外键和索引设计(5)大数据量下的存储及性能优化在关系数据库…

【Android项目学习】3. MVVMHabit

项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础&#xff0c;整合OkhttpRxJavaRetrofitGlide等流行…

GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程

大家好&#xff0c;今天给大家介绍一下&#xff1a;GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程。 文章目录 一、GPU算力平台概述人工智能智能发展为什么需要GPU算力平台 二、注册与登录账号注册流程 三、平台的应用之Anydoor应用启动器选择Anydoor的应用场景Anydoo…

学习虚幻C++开发日志——创建Selection Widget及其应用

教程视频&#xff1a;脚本冒险 - YouTube 前提&#xff1a;此代码运用到Common UI插件&#xff0c;需将其开启&#xff0c;以免后序编写产生未定义结构体的报错信息&#xff01; 用C进行UI绑定 创建继承于CommonUserWidget的类&#xff0c;此处命名为SelectionBase Select…

Kafka中的Topic和Partition有什么关系?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka中的Topic和Partition有什么关系&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka中的Topic和Partition有什么关系&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Apache Kafka 中&#…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时&#xff0c;我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过&#xff0c;在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理&#xff0c;现在我们就撸一把构建元素中插件的用法。 一、…

c和c++中为什么要防止头文件被重复包含!

在编程中&#xff0c;头文件就像一本工具书&#xff0c;它包含了函数、类、宏、全局变量等的定义和声明&#xff0c;供其他代码文件引用。想象一下&#xff0c;如果你在写一篇文章时&#xff0c;反复引用同一本工具书的内容&#xff0c;会发生什么情况呢&#xff1f; 1. 避免重…

django vue3实现大文件分段续传(断点续传)

前端环境准备及目录结构&#xff1a; npm create vue 并取名为big-file-upload-fontend 通过 npm i 安装以下内容"dependencies": {"axios": "^1.7.9","element-plus": "^2.9.1","js-sha256": "^0.11.0&quo…

MCP(Model Context Protocol)模型上下文协议 进阶篇3 - 传输

MCP 目前定义了两种标准的客户端-服务端通信传输机制&#xff1a; stdio&#xff08;标准输入输出通信&#xff09;HTTP with Server-Sent Events (SSE)&#xff08;HTTP 服务端发送事件&#xff09; 客户端应尽可能支持 stdio。此外&#xff0c;客户端和服务端也可以以插件方…

openai swarm agent框架源码详解及应用案例实战

文章目录 简介数据类型Agent类Response类Result类Swarm类run_demo_loop交互式会话 基础应用agent-handsofffunction-callingcontext_variablestriage_agent 高阶应用通用客服机器人(support bot)构建航班服务agent 参考资料 openai 在24年10月份开源了一个教育性质的多agents协…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 2:基础知识

目录 1 预热1.1 记号1.2 分类器计算过载问题 2 多头编码&#xff08;MHE&#xff09;2.1 标签分解2.2 多头组合&#xff08;Multi-Head Combination&#xff09; 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者&#xff1a;Daojun Liang, Haixia …

攻防世界 - Misc - Level 1 | 适合作为桌面

关注这个靶场的其它相关笔记&#xff1a;攻防世界&#xff08;XCTF&#xff09; —— 靶场笔记合集-CSDN博客 0x01&#xff1a;考点速览 想要通过本关&#xff0c;你需要掌握以下知识点&#xff1a; Stegolve 查看图片隐写内容。 了解 pyc 文件&#xff0c;并知道如何通过 Wi…

Unity 从零开始的框架搭建1-3 关于命令模式的一些思考

Unity 从零开始的框架搭建1-2 事件的发布-订阅-取消的小优化及调用对象方法总结[半干货]-CSDN博客 本人水平有限 如有不足还请斧正&#xff0c;该文章专栏是向QFrameWork作者凉鞋老师学习总结得来&#xff0c;吃水不忘打井人&#xff0c;不胜感激 关于此模式我曾实现过&#…

UVM :uvm_sequence_item property and methods

transaction是uvm_sequence_item的一个子类。 topic transaction介绍 uvm_sequence_item override Set_type_override:同类型替换 Set_inst_override:同例化替换

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer&#xff0c;和boot打交道是很常见的吧。熟悉boot的人都会知道&#xff0c;启动一个springboot应用&#xff0c;就是用鼠标点一下启动main方法&#xff0c;然后等着就行了。我们来看看这个main里面。 SpringBootApplication public class E…