netCDF的数据具有以下特征:
- 自描述性(Self-Describing):netCDF文件会包含该数据文件的解释信息;
- 便捷性(Portable):netCDF文件可以支持如整型、字符型、浮点型等不同类型的数据存储;
- 可伸缩性(Scalable):通过netCDF接口,可以快捷地访问大规模数据集中的数据;
- 可附加性(Appendable):通过恰当的结构,数据可以直接附加在已有的netCDF文件之后;
- 共享性(Sharable):netCDF可以允许多个访问者同时访问统同一文件;
- 可存档性(Archivable):当前版本可以访问所有先前的netCDF文件数据。
一个netCDF文件由以下两部分组成:
- 头文件(header):包括文件中除数据之外的所有信息——属性(Attributes)、维度(dimensions)和变量(Variables)。
- 数据(data part):包含变尺寸和定尺寸的数据。
| 函数名 | 说明 |
|---|---|
| nccreate | 在netCDF文件中创建变量 |
| ncdisp | 在命令行窗口中显示netCDF数据源内容 |
| ncinfo | 返回有关netCDF数据源的信息 |
| ncread | 读取netCDF数据源的变量数据 |
| ncreadatt | 读取netCDF数据源的属性值 |
| ncwrite | 将数据写入netCDF文件 |
| ncwriteatt | 将属性写入netCDF文件 |
下面我们以数据集为例,利用以上部分函数来读取数据集中的数据。
- ncdisp
%文件名 FileName = 'uwnd.2004.nc'; %在命令行窗口中显示netCDF数据源内容 ncdisp(FileName)
| 变量 | 含义 | 数据规模 | 范围 |
|---|---|---|---|
| level | 气压水平 | 17 | [1000 10] |
| lat | 维度 | 73 | [90 -90] |
| lon | 经度 | 144 | [0 357.5] |
| time | 时间 | 1464 | [ ] |
| uwnd | 风速 | 144x73x17x1464 | [-74.89999 138.3] |
最后的uwnd就是该数据文件中实际存储的数据。
- ncinfo
%文件名 FileName = 'uwnd.2004.nc'; %查看netCDF数据源的信息 info = ncinfo('uwnd.2004.nc');
- ncread
ncdisp和ncread函数都只能看到数据文件的基本信息,若想要看到各维度的详细信息,还需要调用ncread函数。
%文件名 FileName = 'uwnd.2004.nc'; %读取netCDF数据源中的各变量数据 time = ncread(FileName,'time'); level = ncread(FileName,'level'); lat = ncread(FileName,'lat'); lon = ncread(FileName,'lon');
%文件名 FileName = 'uwnd.2004.nc'; %查询位于(32.5°N,112.5°E),气压值为925毫巴的空间点在2004年3月2日至3月4日的uwnd数据 lon = 46; % 112.5°E lat = 24; % 32.5°N level = 2; % 925毫巴 timeindex = 4*(31+29+1)+1; % 起始时间 3月2日0点 period = 12; % 12个时刻点 uwnd = zeros(period,1); %打开netCDF数据文件(只读方式) ncid = netcdf.open(FileName,'NOWRITE'); %获取uwnd数据 varid = 4; winddata = netcdf.getVar(ncid,varid); %关闭netCDF数据文件 netcdf.close(ncid); %获取目标区间数据 uwnd(1:period) = winddata(lon, lat, level, timeindex : timeindex+period-1)
参考文献:
- https://www.unidata.ucar.edu/software/netcdf/
- https://www.mathworks.com/help/matlab/network-common-data-form.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220800.html原文链接:https://javaforall.net
