【GIS理论:什么是 NetCDF 数据】概念 数据格式

已被阅读 545 次 | 文章分类:gis随笔 | 2024-02-13 23:08

NetCDF(网络公用数据格式)是一种用来存储温度、湿度、气压、风速和风向等多维科学数据(变量)的文件格式

1 NetCDF概述

NetCDF和zip、jpeg、bmp文件格式类似,都是一种文件格式的标准。

小白GIS

NetCDF文件起初目的是用于存储气象科学中的数据,现在已经成为许多数据采集软件生成文件的格式。利用NetCDF可以对网络数据进行高效地存储、管理、获取和分发等操作。

由于其灵活性,能够传输海量的面向阵列(array-oriented)数据,目前广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域

2 NetCDF 文件格式

NetCDF文件后缀为.nc

3 NetCDF 文件组成部分

NetCDF 文件包含维度、变量和属性。将这几部分结合起来使用可以说明数据以及面向数组的数据集中各数据字段之间关系的含义

下图显示的是采用 CDL(网络公用数据格式语言)表示法来描述的 NetCDF 文件结构。CDL 是用于描述 NetCDF 文件内容的 ASCII 格式

小白GIS

👉1.维度(Dimensions)

NetCDF 维度包含名称和大小。维度大小是一个任意的正整数。每个 NetCDF 文件中只有一个维度的大小是“无限制”的。这类维度是无限维度或记录维度。无限维度的变量可以沿着该维度增加到任意长度

维度可以用来表示实际物理维度,例如时间、经度、纬度或高度。维度还可以用来为其他量建立索引,例如,站点或模型的运行数。指定变量的 shape 时,可以多次使用同一个维度。

👉2.变量(Variables)

变量代表相同类型的值数组。变量用来存储 NetCDF 文件中的大部分数据。变量具有名称、数据类型以及在创建该变量时指定的维度列表所描述的 shape。

维度数称为秩(也称为维数)。标量变量的秩为 0,矢量的秩为 1,矩阵的秩为 2。变量还可以具有能够在变量创建后进行添加、删除或更改的相关属性

变量对应着真实的物理数据。比如家里的电表,每个时刻显示的读数表示用户的到该时刻的耗电量。这个读数值就可以用netcdf里的变量来表示。它是一个以时间为自变量(或者说自变量个数为一维)的单值函数。

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

👉3.属性(Attributes)

属性对变量值和维的具体物理含义的注释或者说解释。因为变量和维在netcdf中都只是无量纲的数字,要想让人们明白这些数字的具体含义,就得靠属性这个对象

在netcdf中,属性由一个属性名和一个属性值(一般为字符串)组成。比如,在某个cdl文件中有这样的代码段:

                                        
temperature:units = "celsius" ;
                                        
                                    

前面的temperature是一个已经定义好的变量(Variable),即温度,冒号后面的units就是属性名,表示物理单位,=后面的就是units这个属性的值,为“celsius” ,即摄氏度,整个一行代码的意思就是温度这个物理量的单位为celsius

👉4.数据(data)

netcdf文件如下:

                                        
netcdf simple_xy {
dimensions:
x = 6 ;
y = 12 ;
variables:
int data(x, y) ;
data:
data =
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 ;
}
                                        
                                    

这个结构包括三个部分

(1) 维的定义,以dimensions:关键字开头

                                        
dimensions:
    x = 6 ;
    y = 12 ;
                                        
                                    

定义了两个轴(或者说两维),名字分别为x和y,x轴的长度(准确的说是坐标点的个数)为6, y轴的长度为12。

(2) 变量的定义:以variables:开头

                                        
variables:
int data(x, y);
                                        
                                    

定义了一个以x轴和y轴为自变量的函数data,数学公式就是f(x,y)=da

注意维出现的顺序是有序的

(3) 数据的定义,以data:开头

                                        
data:
 data =
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 ;
                                        
                                    

这个段数据用数学的函数公式f(x,y)=data来看

                                        
x=0,y=0时,data = 0;

x=0,y=1时,data = 1;

x=5,y=11是,data=71;
                                        
                                    

👉5.约定

约定用来定义为每个变量中的数据提供确切描述的元数据及其空间和时态属性。约定有助于使用不同数据源的用户确定哪些量具有可比性。

约定名称在 NetCDF 文件中以全局属性的形式表示

4 NetCDF 数据的存储

NetCDF 文件中的数据以数组形式存储。例如,某个位置处随时间变化的温度以一维数组的形式存储。某个区域内在指定时间的温度以二维数组的形式存储

三维 (3D) 数据(如某个区域内随时间变化的温度)或四维 (4D) 数据(如某个区域内随时间和高度变化的温度)以一系列二维数组的形式存储

三维数据:某个区域内随时间变化的数据

小白GIS

四维数据:某个区域内随时间和高度变化的数据

小白GIS

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号