1/261常用气象格式的数据读取及可视化hzwjy2012-11-1本文介绍了气象研究(非业务使用)中的常用的数据格式,读写操作和数据可视化方法。目录常用气象格式的数据读取及可视化...............................................................................................1目录..................................................................................................................................................11.常用编程语言和工具...............................................................................................................22.常用的数据格式.......................................................................................................................22.1.普通二进制格式...........................................................................................................22.2.文本数据.......................................................................................................................52.3.NetCDF..........................................................................................................................62.4.HDF、HDF-EOS、HDF5和HDF-EOS5..........................................................................72.5.GRIB和GRIB2...............................................................................................................83.数据可视化...............................................................................................................................83.1.变量与经纬度...............................................................................................................83.2.绘制等值线图.............................................................................................................113.3.绘制填色图.................................................................................................................133.4.绘制矢量箭头.............................................................................................................153.5.绘制流线.....................................................................................................................173.6.绘制卫星数据.............................................................................................................183.7.绘制站点数据.............................................................................................................203.8.看图工具.....................................................................................................................23附录:............................................................................................................................................24NCL的安装.............................................................................................................................24NetCDF库的安装...................................................................................................................24GMT的编译............................................................................................................................24参考资料.........................................................................................................................................262/2621.常用编程语言和工具气象研究中常用的编程语言包括C语言、FORTRAN语言,其中FORTRAN为FORmulaTRANslator的缩写,意为公式翻译器,在数值计算、工程计算等领域有着广泛的应用,使用FORTRAN编写程序也是气象研究最基本的技能之一。此外还会用到IDL、MatLab、NCL、GrADS等工具进行数据分析和可视化。IDL和MatLab可用于数值计算和数据可视化,直接使用其内置的函数可以很方便地完成用户所需的各种计算,与FORTRAN相比,其码也更简洁。NCL与GrADS也可以完成数据分析以及数据的可视化,而且它们都是专为气象领域开发的软件,对气象数据的支持较好,绘图也更为方便,经过简单的设置就可以读取数据并绘制各种图像。在平时的使用中,可以以其中的一种工具为主,再稍微了解另外的几种工具,配合使用达到效率的最大化。IDL和MatLab都是商业软件,可以使用GDL(GNUDataLanguage)和SciLab等作为替代。除了上面提到的编程语言,也可以使用Python(SciPy)计算机语言进行数据分析和绘图,也可以尝试GMT(GenericMappingTools)、ncview、Panoply等工具。下面的实际操作中主要以FORTRAN(使用gfortran编译器)和NCL(NCL6.1.0)来实现,本文仅对数据处理和绘图进行简单的介绍,相关语法请参考其它资料。2.常用的数据格式2.1.普通二进制格式由于计算机存储文件都采用二进制形式,所以从广义上讲,所有的存储在设备中的文件都是二进制文件,包括ASCII及扩展ASCII字符中编写的数据或程序指令的文件。这里用二进制格式指除文本数据外的文件格式,而普通则是为了区分下面将提到的标准科学数据格式。这种文件的数据的存放序列与其在内存中的存放非常相似,所以在输入输出时几乎不需作转化。由于去掉了格式控制,与有格式文件相比,在使用数据信息时所做的处理更简洁迅速;同样也是这个原因使得无格式文件中即使存放着数字,也不能用文本编辑软件打开并看到。FORTRAN的无格式文件便是这种普通二进制格式。比如将1~10的整形数据存入一个直接存储的无格式文件中:PROGRAMTEMPLATEIMPLICITNONEINTEGER::iOPEN(31,file=test.dat,access=direct,form=unformatted,recl=4)DOi=1,10WRITE(31,rec=i)iENDDOCLOSE(31)3/263ENDPROGRAMTEMPLATE使用文本编辑器打开只能看到无意义的乱码,使用十六进制编辑器(比如WinHEX)打开后可以看到如下内容:使用NCL可以很方便地读取这些数据,因为我们知道这里总共有10个整数,所以可以一次性将10个数据都读取出来:;NCL脚本beginfiDat=./test.datdata=fbindirread(fiDat,-1,(/10/),integer)print(data)end如果采用顺序存储的方法存储相同的数据:PROGRAMTEMPLATEIMPLICITNONEINTEGER::iOPEN(31,file=test.dat,access=sequential,form=unformatted)DOi=1,10WRITE(31)iENDDOCLOSE(31)ENDPROGRAMTEMPLATE使用十六进制编辑器打开可以看到如下内容:4/264在每一个记录前后都有4-byte大小的数据(可以通过设置编译选项更改长度),用于表示记录的开始和结束。这也是为什么同样的数据,采用顺序存储时文件比直接存储时大。在使用普通二进制数据时还可能会遇到端序(Endianness)的问题,在计算机科学领域中,端序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。Endianness有时候也可以用指位序(bit)。平时接触到的大部分二进制数据都是小端(little-endian),大端(big-endian)多出现在数值模式的输入和输出中。PROGRAMTEMPLATEIMPLICITNONEINTEGER::ii=305419896!16进制的0x12345678OPEN(40,FILE='test1.dat',form='unformatted',access='direct',recl=4)WRITE(40,REC=1)iENDPROGRAMTEMPLATE这便是小端二进制数据的文件内容。通过更改FORTRAN编译器设置,可以让程序输出大端数据:$gfortran-fconvert=big-endianfoo.f90再次运行程序后,输出数据的内容为:使用NCL读写二进制数据时,可以通过函数s