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提供了L1B
和L2
两种级别的数据下载。L2
级数据产品介绍如下表:
官网产品数据介绍:https://sentiwiki.copernicus.eu/web/sentinel-5p
Product type | Parameter |
---|---|
L2__O3____ | Ozone (O3) total column(总柱含量) |
L2__O3_TCL | Ozone (O3) tropospheric column(对流层柱含量) |
L2__O3__PR | Ozone (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_AI | UV Aerosol Index(紫外区域气溶胶指数) |
L2__AER_LH | Aerosol Layer Height (mid-level pressure)(气溶胶层高度(中等气压)) |
UV product | Surface Irradiance/erythemal dose |
L2__NP_BDx, x=3, 6, 7 | Suomi-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")
在安装过程中,可能会遇到依赖包缺少的问题,比如
maptools
、rgdal
、rgeos
包,需要在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
能力有限,敬请谅解!!