在 Fortran 90 中使用 netCDF 数据格式简介

本文翻译自 Michael Thorne (michael.thorne@utah.edu) 所执笔的 Introduction to using the netCDF data format with Fortran 90(故而文中所有自称均指代原文作者),谨供学习在 Fortran 中使用 netCDF 数据格式之用。

引言

netCDF(即 network Common Data Form)为存储多维数据而产生的一种基于数组的数据结构。一个 netCDF 文件采用 ASCII 头书写,以二进制格式存储数据。因为我们不必担心字节序的问题,以二进制文件来保存数据具有明显的优势。字节交换可以通过调用 netCDF 库来实现,netCDF 文件可以在任何平台上读取。与使用 netCDF 数据格式相关的特性如下:

  • 坐标系:支持 N 维坐标系。
    • X 坐标(如,纬度)
    • Y 坐标(如,经度)
    • Z 坐标(如,高程)
    • 时间维度
    • 其他维度
  • 变量:支持多重变量。
    • 如,S 波速度,P 波速度,密度,应力分量……
  • 空间几何:支持多种网格类型(隐式或显式)。
    • 规则网格(隐式)
    • 不规则网格
    • 数据点
  • 自我描述:数据集可以包括数据定义信息。
    • 单位(如,km,m/sec……)
    • 注释(如,标题,调用约定,变量名(如,P 波速度),坐标单位(如,km/sec),……)

关于数据格式的更全的文档在:

文件名约定:netCDF 文件通常以 .nc 为扩展名。
文件约定:有很多 netCDF 数据风格和约定。在地震学中,人们对 .grd 文件(GMT 软件生成)最熟悉。为了符合 GMT 的要求,采用 COARDS (Cooperative Ocean/Atmosphere Research Data Service) 数据约定书写 netCDF 文件。
我开始使用 netCDF 文件的原因之一是,网格信息也可以随数据一同保存下来。因此,在使用类似 GMT 的软件时我不必显式地书写 xyz2grd 命令对数据成图和记忆正在成图的数据文件的范围(GMT 中的 -R 选项)以及网格增量(-I 选项)是多少。然而,只能在直角坐标系统下使用 COARDS 约定。坐标可以不等间距,但必须单调递增或单调递减。很不幸,在不使用类似 blockmean 的命令对数据进行预处理时,GMT 是不能对不等间距网格进行操作的。
可视化:使用 netCDF 格式还有一个明显的优势,即有多种数据查看器。另外,几乎所有的我熟悉的可视化包都可以读取 netCDF 格式。这里有一些常用的免费查看器或可视化包:

文件结构

netCDF 文件包含如下结构:

netCDF 文件结构 作用
全局属性 描述文件内容
维度 描述数据结构(如,时间,深度,纬度,经度)
变量 按照维度存储数据的数组
变量属性 描述每个变量的内容

另参见 博文

---------- 文结至此 静待下章 ----------