基于GDAL库的LINUX环境下的FY-3D和FY-4A遥感数据处理

2018-05-10 05:10王燕婷
电子技术与软件工程 2018年24期
关键词:气象卫星数据格式风云

王燕婷

摘要

基于GDAL库的功能和其开源、可对栅格空间数据操作的特点,将GDAL与C++语言的完美结合,可极大得发挥其在开发遥感图像处理软件中的优势,并可跨平台应用于不同操作系统下的遥感图像数据处理软件系统中。本文介绍了最新一代的气象卫星风云三号D星极轨卫星数据特点及格式和风云四号A星静止卫星数据特点及格式,以及以FY-3D和FY-4A官网发布数据为例,详细讲述了如何利用GDAL库和c++语言,对HDF5和NETCDF格式的遥感数据进行通道合成、植被指数计算等遥感图像处理的实现,为遥感软件的开发提供了参考。

【关键词】遥感图像处理 GDAL 风云三号D星风云四号A星 通道合成 植被指数

1概论

根据气象卫星数据的背景特点以及GDAL的上述优点,本文利用GDAL来对FY-3D和FY-4的预处理后数据,进行数据的提取、解析和数据格式转换,以及基础的数据通道合成、植被指数计算等遥感数据的处理。

2软件架构

HDF格式和NetCDF格式,均是用于存储气象科学的网络通用数据格式,其中HDF是美国国家高级计算机中心为了满足科研领域需要而开发出的一种高效存储科学数据的数据格式,可包含多种类型数据,如栅格图像数据、科学数据集、信息说明等,因此一个HDF图像文件数据,可方便的查取其地理定位、轨道参数、栅格图像数据;而NetCDF是由美国大学大气研究协会unidata项目科学家针对气象科学数据特点开发的一种可以通用的资料存储格式,能够存储海量的面向阵列数据,可支持生成、访问和共享科学数据,且与平台无关,可在不同平台下传输。

因此,要在Linux操作系统下用GDAL库读取和处理风云三号和风云四号的气象卫星遥感数据,需要安装GDAL库之后,基于GDAL原有功能基础上,按照其代码规范标准和结构标准进行功能扩展,集成HDF库和NetCDF库并重新发布GDAL版本,才能进行HDF格式和NetCDF格式文件的读写操作,这样就能方便得把HDF和NetCDF中的数据信息转换为其他通用的栅格数据格式,如Geotiff等,方便进一步数据的应用于处理。

2.1框架搭建

以GDAL和C++编程语言的结合应用,设计出本软件的程序框架,采用面向对象的编程思想进行框架的搭建,新建了用于读取风三HDF数据的GDALHDFData类,用于读取风四NetCDF数据的GDALNetCDFData类,用于图像处理的ImageProcess类,以及用于植被指数计算的数据处理NDVIProcess类。

(1) GDALHDFData类:包含各种成员函数,用于打开风云三号MERSI载荷的数据,包括各种数据集、文件属性等,实现分块读取和格式转换等操作;

(2) GDALNetCDF类:包含各种成员函数,用于打开风云四号AGRI成像仪载荷的产品数据,包括各种数据集、文件属性等,实现分块读取和格式转换等操作;

(3) ImageProcess类:包含各种不同通道作为参数作为图像处理的函数;

(4) NDVIProcess类:包含利用读取的通道数据作为植被指数计算处理的函数;

2.2 Linux环境下支持HDF和NetCDF库的GDAL开源库安装

默认的GDAL库并不包含对MODIS数据、风三数据和风四数据的支持,需要在gdal原有功能基础上,按照其代码规范标准和结构标准进行功能扩展,集成HDF4、HDF5、netcdf库并重新编译发布。方法如下:

(1)下载针对HDF4、HDF5和NetCDF的Iinux环境下的源码,安装hdf4的库libdf.a、libmthdf.a和libudport.a.hdf5的库libhdf5.a、libhdf5.so和libhdf5_ hI.a,以及NetCDF的库libnetcdf.a和libnetcdf.SO.

(2)安装GDAL库,修改配置文件nmake.opt,修改有关HDF4、HDF5和NetCDF的配置

HDF4_ PLUGIN= No

HDF4 DIR= /user/MODIS/LIB

HDF4 LIB= /user/MODIS/LIB/lib/libdf.a/user/MODIS/LIB/lib/libmfhdfa

HDF5 PLUGIN= No

HDF5__ DIR= /user/MERSI/LIB

HDF5__ LIB= /user/MERSI/LIB/lib/libhdf5

NETCDF PLUGIN= No

NETCDF_SETTrNG= yes

NETCDF LIB=/user/FY4/LIB/lib/libnetcdf.a

NETCDF INC DIR= /user/FY4/LIB/include

(3)運行linux环境下的配置,加载HDF4、HDF5和NetCDF之后,再编译安装。

(4)在linux环境下,输入gdalinfoformats的命令,查看是否配置好支持HDF4、HDF5和NETCDF的库,如果均为yes,则证明有了这些库的支持。

3处理功能设计

3.1风三数据读取与显示

FY-3DMERSI载荷的Ll数据为HDF格式,以1000M分辨率的数据为例, 其文件名为:FY3D MERSI GBAL11 20180121 0330 1000M MS.HDF,当中含有多个子数据集,如要获取某一指定的子数据集的数据,分为两步,一是打开文件获取子数据名列表;二是根据第一步获得的列表,选择打开指定数据集,核心代码如下:

3.2风四数据读取与显示

FY-4A的AGRI载荷的L2产品为NETCDF格式,以云检测数据为例,其文件名 为FY4A- AGRI--_N_ DISK 1047E L2-CLM- MULT_NOM_ 20180204234500 20180204235959_ 4000M_VOOOl.ne,一个NETCDF数据的数据集包含维、变量和属性三种描述类型,每种类型都会被分配一个名字和一个ID,用ID来识别不同数据集。

4实验结果

4.1通道合成结果

由于FY-3D星为最新一代极轨卫星,是颗下午星,MERSI-H载荷每5分钟一个数据,而每轨数据间有重叠区域,因此在进行3-2-1通道的真彩色合成前.需要对每个5分钟数据做投影,并按照最优天顶角的原则进行去重复,最后得到根据获取的三个通道数据进行的合成显示。

5结论

本文的亮点在于在统一的开发平台库中可实现多种卫星遥感数据的处理,并将不同来源和格式的数据转化为常用的通用的遥感数据格式,实现了批量化的处理,供后续处理应用打下了基础,大大提高了工作效率。

参考文献

[1]许健民,杨军,我国气象卫星的发展与应用[J].国家气象卫星中心气象学报,2010.

[2]王继成,基于GDAL的HDF文件格式栅格数据的提取[J].计算机技术与信息发展,2011.

猜你喜欢
气象卫星数据格式风云
监测“龙王下雨”的气象卫星
风云三号E星初样星
窃听风云(九)
在智能交通系统中PLC数据格式转换方法的研究
象甲风云
H-2A发射“向日葵”9气象卫星
风云气象卫星在产品应用中前行
风云气象卫星如何命名?
论子函数在C语言数据格式输出中的应用
DWG与SHP数据格式互转换方法研究——以龙岩规划测绘数据为例