IDL语言处理HDF格式遥感数据的研究_路文海
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海洋信息年
2006
1 HDF格式与IDL语言
1.1 HDF格式
由美国伊利诺伊大学(the University of 的组织
Illinois)NCSA(The National Center
开发的
for Supercomputing Applications)HDF ()文件格式是一Hierarchical data formats
种超文本文件格式,能够综合管理、、矢
2D3D
量、属性、文本等多种信息,帮助科学家摆脱不同数据格式之间相互繁琐的转换,将更多的时间和精力用于数据分析。
HDF格式能够存储不同种类的(),包括图像、SDS Scientific Data Set
多维数组、指针及文本数据。
HDF格式还提供命令方式,分析现存HDF文件的结构,并即时显示图像内容。
科学家可以用这种标准数据格式快速熟悉文件结构,并能立即着手对数据文件进行管理和分析。
由于HDF的诸多优点,这种格式已经被广泛应用于目前国外各种卫星传感器的标准数据格式。
读取文件的软件很多,包括
HDF、
C 、、
IDL MATLAB FORTRAN等,本文以的
MODIS SST 数据为例将详细讲解用IDL语言读取HDF格式数据的方法。
语言
1.2 IDL
()交互式IDL Interactive Data Language
数据语言是由美国Kodak公司的全资子公司RSI ()开发并投向市场、面Research System Inc
向矩阵且用于数据可视化研究与应用开发的第四代计算机语言。
它可以快速地分析数据和实现可视化。
IDL语言提供了大量的基础数据类型,能读入几乎所有的数据格式。
IDL适用于各种主要平台,如,
Windows UNIX等,使用户在多平台环境下的数据分析变得更加容易,并确保在硬件变动的情况下,由某平台开发的程序能成功地移植到另一个平台,从而提高了程序的可移植性。
本文数据处理使用的是,以下简称
IDL6.1IDL。
数据下载
2
数据来源
2.1
美国宇航局实验室物理海洋学数据现有
JPL
档案分发中心()的网站提供了大
PO.DAAC/JPL
量的卫星遥感信息和资料,可以使用匿名FTP登陆下载数据。
本文数据的地址为:
FTP
ftp://128.149.225.30/sea_surface_temperature/modis/data/ aqua/L3_mapped/sst/monthly/04km/2005
数据说明
2.2
(
MODIS Moderate Resolution Imaging
)
Spectroradiometer中分辨率成像光谱仪是NASA 联合其他一些科研机构开发的卫星搭载的传感器。
是搭载在
MODIS EOS(Earth Observing System) AM和PM卫星上的关键设备,每两天就可以提供从可见光到红外波段的地球陆地、海洋和大气的全面的全球观测数据。
()海表温度 SST Sea Surface Temperature
资料是容易获得的,特别是近年来从卫星观测海
IDL语言处理HDF格式遥感数据的研究
路文海,12
(中国海洋大学青岛市国家海洋信息中心天津市)
1.266003
2.300171
摘要本文分别介绍了HDF格式与IDL语言,说明了数据下载的相关问题。
并以MODIS的SST数据为例,详细介绍了用IDL处理HDF格式数据和相应的制图方法。
关键词制图
IDL HDF MODIS SST
第期路文海:
3 语言处理格式遥感数据的研究
IDL HDF
表温度快速而准确,有利于海洋气候和海气相互作用的研究。
本文下载了年~月的全球
20051124 km白天月平均温度数据。
MODIS的SST数据对应着两个文件:SST数据文件和数据质量文件。
在处理数据文件时,若数据质量文件中点值不为零,则对应的SST数据点必须剔除掉。
数据制图
3
首先用
(1)spawn函数将所有SST数据名读入到filelist中。
经常需要一次处理许多遥感数据文件,手工修改文件名工作量会相当大,IDL中提供的spawn函数可以直接调用“DOS命令提示符”对文件名进行读取。
语法为:spawn,‘dir/b‘+文件所在目录+文件名(允许使用通配符),filelist
读取
(2)HDF数据。
IDL中有很多函数可以直接读取HDF数据信息,下面列举HDF数据读取的方法,执行完下列命令后,获得数据值,即str 矩阵。
;打 sd_id=hdf_sd_start(tempdir+ filename [i],/read)
开文件
HDF
;获取
result=hdf_sd_select(sd_id,0) SDS ID
;获取数据值
hdf_sd_getdata,result,str SDS
;关闭文件
hdf_sd_end,sd_id HDF
从
(3)str矩阵中截取中国海区(东经°
105~°,北纬°~°)进行处理。
由于150545IDL 画图时默认从左下角开始,数据第一行显示在下方,最后一行显示在上方,正好和str矩阵存放数据顺序相反,因此需要对str矩阵做翻转。
另外,读HDF属性数据时会发现转换公式:Y=slope*x+intercept,str矩阵要按照此公式进行转换才能得到真实值。
在数据处理过程中,陆地值赋,无效值赋
100。
实现代
99
码如下:
m1=fix((8192/360.0) *(105+180))
n1=fix((4096/180.0)*(5+90))
m2=fix((8192/360.0) *(150+180))
n2=fix((4096/180.0)*(45+90))
m=m2-m1
n=n2-n1
str=reverse(str,2)strQ=reverse(strQ,2)
strChina=fltarr(m,n)
for i=0,m-1 do begin
for j=0,n-1 do begin
case strQ[i,n1+j] of
0 : begin
strChina [i,j]=(str[m1+i,n1+j]*0.01)-300
end
255: begin
strChina [i,j]=100
end
else:begin
strChina [i,j]=99
end
endcase
endfor
endfor
对数据做拉伸处理以增加显示度。
将无 (4)
效数据赋为白色,陆地部分赋为浅褐色。
用户可以采用IDL自带色板,也可以根据需要自定义色板。
命令可以加载IDL预定义的41个色板中的一个,本文采用自定义的色板。
;返回陆地点数组下标值index1=where(strChina eq 100.0)
;返回无效点数组下标值index2=where(strChina eq 99.0)
;数据拉伸范围strChina =bytscl(strChina,0,35,top=191)
(,)
0191
;陆地点赋值为浅褐色
strChina [index1]=254
;无效点赋值为白色
strChina [index2]=0
用
(5)tv命令来显示图像。
同时,为图像加上陆地、配置色板和文字标注,进行整饰输出。
图四月份白天西北太平洋海表面月平均温度
1。