王燕婷

摘要

基于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.

Linux配置gdal变量环境,基于GDAL库的LINUX环境下的FY-3D和FY-4A遥感数据处理相关推荐

  1. linux配置usb主从_基于Linux的USB主/从设备之间的三种通信方式

    随着简单易用的USB接口日益流行,在嵌入式系统中添加对USB接口的支持已成为大势所趋.本文通过介绍Linux中支持USB的各种模块和库,分析了在Linux上利用USB实现高速串口和以太网连接等通信方式 ...

  2. linux配置usb主从_基于Linux的USB 主/从设备之间通讯的三种方式

    转载:http://archive.eet-china.com/www.eet-china.com/ART_8800323770_617693_TA_eda530e7.HTM 随着简单易用的USB接口 ...

  3. kali linux 入门(1) 基于win10和docker的环境搭建

    1. 前言 渗透测试并没有一个标准的定义.国外一些安全组织达成共识的通用说法是,渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法,这个过程包括对系统的任何弱点.技术缺陷或漏 ...

  4. 嵌入式课程设计linux,嵌入式系统课程设计--基于U盘的linux操作系统的构建

    嵌入式系统课程设计--基于U盘的linux操作系统的构建 1 课程设计报告课程设计报告 课程名称课程名称 嵌入式系统课程设计嵌入式系统课程设计 设计题目设计题目基于基于 U盘的盘的 linux 操作系 ...

  5. s3c2440a如何保证嵌入式linux对于虚拟内存的支持?,基于S3C2440的嵌入式LINUX操作系统内核研究【资料学习】.doc...

    学校代码: 11059 学 号:0805070285 Hefei University 毕业论文(设计) BACHELOR DISSERTATION 论文题目: 基于S3C2440的嵌入式 LINUX ...

  6. android单元测试android环境,基于Robolectric的Android单元测试 —环境搭建与部署运行...

    移动端的测试中,因为回归一些逻辑分支比较多的功能时工作量比较大,且不太适合用UI完成,尝试通过单元测试来完成.几经波折终于完成了一个功能的UT用例并在CI上部署运行,现总结如下: 一.Robolect ...

  7. linux配置指定ip访问指定端口号,操作系统linux和dos linux下通过iptables只允许指定ip地址访问指定端...

    一篇 : linux下通过iptables只允许指定ip地址访问指定端口的设置方法 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清 ...

  8. 基于c语言的遥感图像处理,基于GDAL的遥感影像显示(C#版)

    在matlab中实现遥感影像和shp文件的结合显示 clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure ...

  9. 各linux桌面性能比较,七大顶级桌面比较!Linux平台自由选择

    1七大顶级Linux桌面:Unity 对于开源Linux平台来说,如何选择就是首要解决的问题.通常Linux发行版都有默认的桌面成为你的首选,但目前可供选择的桌面环境种类繁多.特别是Ubuntu系统一 ...

最新文章

  1. jqgrid ajax 请求参数,如何将csrf_令牌传递给jqgrid的editurl的post参数?
  2. QT的QScroller类的使用
  3. CodeSmith和PowerDesigner的使用安装和数据库创建(原创系列教程)
  4. 个推基于Docker和Kubernetes的微服务实践
  5. 在windows XP下如何用Vmware装Linux操作系统
  6. 从C语言到C++的进阶之一些C基础上的增强用法(篇五)
  7. 网易云音乐随机歌曲调用API接口
  8. 网络舆情监测系统学习笔记——GIT的…
  9. Dreamweaver网页设计与制作100例:用DIV+CSS技术设计的书法主题网站(web前端网页制作课作业)...
  10. 制作粉色少女系列 生日快乐祝福网页(HTML+CSS+JS)
  11. 如何优化程序员的内部培训
  12. 知乎提示浏览器版本过低怎么办
  13. IP-guard苹果加密软件苹果系统加密Mac文档加密软件
  14. 基于多传感器的AUV控制系统
  15. Java方法创建及调用--------06
  16. 29 Redis 应对并发访问的无锁原子操作
  17. 将图片转化为数据储存
  18. python标准库math中sin函数的参数单位是角度吗_弧度 - math.h中的三角函数,参数是弧度,不是角度...
  19. 教师节:这才是真正的老师
  20. 线性滤波和非线性滤波

热门文章

  1. php没有mysql_connect()_【在线等】php不能连接mysql?提示:Warning: mysql_connect() 。。。...
  2. 2021年,深度学习的发展趋势是什么?有哪些值得关注的新动向?
  3. 版权,版权,还是版权
  4. “创新”客户体验的 3 种方法
  5. 【博学谷学习记录】超强总结,用心分享|移动端特点
  6. Java学习教程!java培训北京多少钱
  7. HashMap实现原理深入理解(精华)
  8. .data文件导入到excel表中(以马疝病为例)
  9. ddr42400和2660混插_DDR4和DDR3能通用吗?DDR4与DDR3内存条能在一起混用?
  10. 华为ospf综合实验