前言
马上要开始新的项目了。气象局方面要求处理的数据是 NetCDF 格式的,这是一种封装好了的数据结构,需要连接一些库,调用特定的 API 进行操作。
可这方面我知之甚少,遂利用周日上午的时间学习这种数据结构的存取方法,为后续的项目研发打基础。
NetCDF 概述
NetCDF全称是 Network Common Data Format,即网络通用数据格式。这种数据格式的文件在气象领域被非常普遍的用到,现在也推广到了很多其他的领域。
从数学关系上看,NetCDF 数据结构中存储的数据具有多对一的函数关系,"多"是指维,"一"是指变量值。
很显然,这种数据结构的最大特点就是能够方便地使用多维矩阵。
NetCDF 文件的内容
1. 变量(Variables)
就是物理数据。比如要存储一个台风风场,那么"东经x度 北维y度 风速z米/秒"就是一个变量。
需要注意的是,这个变量是广义的变量,它还包含了自变量x和y,从数学函数的角度来说,在这里一个变量的本质其实是一条具体的函数对应关系。
提到变量一词的时候,有时亦指所有变量的集合。
2. 维(dimension)
一个维对应着变量中自变量的取值范围,也就是 1 中所说的经纬度的范围。
3. 属性(Attribute)
变量和维在 NetCDF 中只是无量纲的数字,因此必须采用某种方式来让人们明白这些数字的含义,属性在这里就派上用场了。
如果你已经定义了一个名为temperature的变量,那么下面这行代码:
temperature:units = "celsius"
的含义是temperature变量的物理单位是celsius。
另外,除了物理单位,一个变量还有很多属性可以进行设置,因此能够全面的存储数据。
下面以代码的形式描述 NetCDF 格式数据 :
1 NetCDF name{ 2 Dimensions:… //定义维数 3 Variables:… //定义变量 4 Attributes:… //属性 5 Data:… //数据 6 }