java写netcdf_[转]netcdf入门

这篇博客介绍了netcdf入门知识,包括netcdf的概念、结构、下载资源、CDL描述语言及其在Windows上的应用。内容涉及netcdf的变量、维、属性、CDL结构的解析,以及使用ncgen和ncdump工具进行netcdf文件的创建和读取。此外,还提供了编程读写netcdf文件的简单示例。
摘要由CSDN通过智能技术生成

netcdf入门

建议直接查看原文,我这里就是留个备份!

作者:laomai

审核者: ybb

转载时请注明出处: http://blog.csdn.net/laomai

最近在做一个和数据采集有关的项目,里面用到了netcdf库,大致看了一下,这里把心得写出来,供

后来者参考。

一、概述

NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”,

对程序员来说,它和zip、jpeg、bmp文件格式类似,都是一种文件格式的标准。netcdf

文件开始的目的是用于存储气象科学中的数据,现在已经成为许多数据采集软件的生成文件

的格式。

从数学上来说,netcdf存储的数据就是一个多自变量的单值函数。用公式来说就是

f(x,y,z,...)=value, 函数的自变量x,y,z等在netcdf中叫做维(dimension)

或坐标轴(axix),函数值value在netcdf中叫做变量(Variables).而自变量和函数值

在物理学上的一些性质,比如计量单位(量纲)、物理学名称等等

在netcdf中就叫属性(Attributes).

二、netcdf的下载

netcdf的是官方网站为http://www.unidata.ucar.edu/software/netcdf/。

在本文中,我们主要讨论在windows平台上使用netcdf软件库。我们将要从这个网站上

下载如下资源

⑴netcdf的源代码,目前的地址为

ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/netcdf-beta.tar.gz

⑵netcdf的在windows平台预编译好的dll,地址为

ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-3.6.1-win32.zip

解压后里面有如下东西

netcdf.dll  为编译好的dll

ncgen.exe  为生成netcdf文件的工具

ncdump.exe 为读取netcdf文件的工具

netcdf.lib 和 netcdf.exp在编程时会用到,后面会讲。

⑶netcdf的相关文档,包括

①netcdf的用户手册,下载地址为http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.pdf

②netcdf的入门教程, 下载地址为http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-tutorial.pdf

③netcdf的c接口api手册,下载地址为http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c.pdf

下面我们来看netcdf文件的具体内容。

三、netcdf文件的内容

一个netcdf文件的结构包括以下对象:

1、变量(Variables)

变量对应着真实的物理数据。比如我们家里的电表,每个时刻显示的读数表示用户的到该时刻的耗电量。

这个读数值就可以用netcdf里的变量来表示。它是一个以时间为自变量(或者说自变量个数为一维)的单值

函数。再比如在气象学中要作出一个气压图,就是“东经xx度,北纬yy度的点的大气压值为多少帕”,这是

一个二维单值函数,两维分别是经度和纬度。函数值为大气压。

从上面的例子可以看出,netcdf中的变量就是一个N维数组,数组的维数就是实际问题中的自变量个数,

数组的值就是观测得到的物理值。变量(数组值)在netcdf中的存储类型有六种,ascii字符(char) ,字节(byte), 短整型(short), 整型(int), 浮点(float), 双精度(double). 显然这些类型和c中的类型一致,搞C的朋友应该很快就能明白。

2、维(dimension)

一个维对应着函数中的某个自变量,或者说函数图象中的一个坐标轴,在线性代数中就是一个N维向量

的一个分量(这也是维这个名称的由来)。在netcdf中,一个维具有一个名字和范围(或者说长度,也就

是数学上所说的定义域,可以是离散的点集合或者连续的区间)。在netcdf中,维的长度基本都是有限的,

最多只能有一个具有无限长度的维。

3、属性(Attribute)

属性对变量值和维的具体物理含义的注释或者说解释。因为变量和维在netcdf中都只是无量纲的数字,

要想让人们明白这些数字的具体含义,就得靠属性这个对象了。

在netcdf中,属性由一个属性名和一个属性值(一般为字符串)组成。比如,在某个cdl文件

(cdl文件的具体格式在下一节中讲述)中有这样的代码段

temperature:units = "celsius" ;

前面的temperature是一个已经定义好的变量(Variable),即温度,冒号后面的units就是属性名,

表示物理单位,=后面的就是units这个属性的值,为“celsius” ,即摄氏度,整个一行代码的意思就是

温度这个物理量的单位为celsius,很好理解。

三、CDL结构

CDL全称为network Common data form Description Language,它是用来描述netcdf文件

的结构的一种语法格式。它包括前面所说的三种netcdf对象(变量、维、属性)的具体定义。

看一个具体例子(这个例子cdl文件是从netcdf教程中的2.1 节The simple xy Example摘出来的)

netcdf simple_xy {

dimensions:

x = 6 ;

y =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值