NetCDF 数据的存储

NetCDF-Java Online Tutorial | netCDF-Java Documentation

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

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

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

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

NetCDF 文件的基本组成部分

NetCDF 文件包含维度、变量和属性。将这几部分结合起来使用可以说明数据以及面向数组的数据集中各数据字段之间关系的含义。下图显示的是采用 CDL(网络公用数据格式语言)表示法来描述的 NetCDF 文件结构。CDL 是用于描述 NetCDF 文件内容的 ASCII 格式。

netcdf file:/D:/tmp/CLDAS/20210330000000/Z_NAFP_C_BABJ_20210330000805_P_CLDAS_RT_CHN_0P05_HOR-TEM-2021033000.GRB2 {dimensions:lon = 1401;lat = 1201;time = 1;height_above_ground = 1;variables:int LatLon_Projection;:grid_mapping_name = "latitude_longitude";:earth_radius = 6371229.0; // doublefloat lat(lat=1201);:units = "degrees_north";float lon(lon=1401);:units = "degrees_east";double reftime;:units = "Hour since 2021-03-30T00:00:00Z";:standard_name = "forecast_reference_time";:long_name = "GRIB reference time";:calendar = "proleptic_gregorian";double time(time=1);:units = "Hour since 2021-03-30T00:00:00Z";:standard_name = "time";:long_name = "GRIB forecast or observation time";:calendar = "proleptic_gregorian";float height_above_ground(height_above_ground=1);:units = "m";:long_name = "Specified height level above ground";:positive = "up";:Grib_level_type = 103; // int:datum = "ground";float Temperature_height_above_ground(time=1, height_above_ground=1, lat=1201, lon=1401);:long_name = "Temperature @ Specified height level above ground";:units = "K";:description = "Temperature";:missing_value = NaNf; // float:grid_mapping = "LatLon_Projection";:coordinates = "reftime time height_above_ground lat lon ";:Grib_Variable_Id = "VAR_0-0-0_L103";:Grib2_Parameter = 0, 0, 0; // int:Grib2_Parameter_Discipline = "Meteorological products";:Grib2_Parameter_Category = "Temperature";:Grib2_Parameter_Name = "Temperature";:Grib2_Level_Type = "Specified height level above ground";:Grib2_Generating_Process_Type = "Analysis";// global attributes::Originating_or_generating_Center = "Beijing (RSMC)";:Originating_or_generating_Subcenter = "0";:GRIB_table_version = "1,0";:Type_of_generating_process = "Analysis";:file_format = "GRIB-2";:Conventions = "CF-1.6";:history = "Read using CDM IOSP GribCollection v3";:featureType = "GRID";
}

CDL 文件示例

维度、变量和属性的名称由任意的字母数字字符串(包括下划线和连字符)组成,并且以字母或下划线开头。但是,以下划线开头的名称是供系统使用的保留名称。NetCDF 名称区分大小写。

尺寸

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

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

变量

变 量代表相同类型的值数组。变量用来存储 NetCDF 文件中的大部分数据。变量具有名称、数据类型以及在创建该变量时指定的维度列表所描述的 shape。维度数称为秩(或维数)。标量变量的秩为 0,矢量的秩为 1,矩阵的秩为 2。变量还可以具有能够在变量创建后进行添加、删除或更改的相关属性。

坐标变量

与维度同名的一维变量称为坐标变量。坐标变量与一个或多个数据变量的维度相关,通常用来定义与该维度相对应的物理坐标。

坐标变量对于 NetCDF 库来说没有特殊意义。但使用这个库的软件会采用一种特殊的方式来处理坐标变量。

属性

NetCDF 的属性用于存储辅助数据或元数据。大部分属性提供有关特定变量的信息。这些属性由变量名称与属性名称共同标识。

提供有关整个 NetCDF 文件的信息的属性称为全局属性。这些属性由属性名称与空变量名(CDL 中)或特殊空变量 ID(C 或 Fortran 中)共同标识。

约定

约定用来定义为每个变量中的数据提供确切描述的元数据及其空间和时态属性。约定有助于使用不同数据源的用户确定哪些量具有可比性。约定名称在 NetCDF 文件中以全局属性的形式表示。

目前,ArcGIS 支持 气候和预测 (CF)以及海洋/大气合作研究数据服务 (COARDS) 约定。然而,它可能也支持采用其他约定创建的 NetCDF 文件。

NetCDF 文件的基本组成部分相关推荐

  1. 基于Java的NetCDF文件解析

    近期在做的项目中,需要使用Java语言进行NetCDF文件的解析. 然而,当在寻找资料时,发现基于Java语言的资料相较于Python少了很多,而且现有的基于Java解析NetCDF文件到CSV的资料 ...

  2. Netcdf 文件多属性,按照时间段导出代码示例

    由于个人即是java初学者,又是netcdf文件小白,所以为了实现最终效果,可以对一个初始nc文件进行筛选指定变量,并且可以设定时间区间,花得时间比想象的要多,最终实现了效果,代码示例如下: @Get ...

  3. python读取nc文件并转换成csv_如何使用Python读取NetCDF文件并写入CSV

    我的目标是从netcdf文件访问数据并以下列格式写入CSV文件. Latitude Longitude Date1 Date2 Date3 100 200 到目前为止,我已经访问了变量,将标题写入文件 ...

  4. python处理netcdf_Python处理netCDF文件

    安装netCDF函数库 pip install netCDF4 -i https://pypi.doubanio.com/simple/ 使用netCDF库写 #--导入netCDF4库--# imp ...

  5. C++读取netcdf文件

    引自:https://blog.csdn.net/laomai/article/details/1740747 https://blog.csdn.net/qq_37962333/article/de ...

  6. 转载:Fortran 程序新建、打开与读写 NetCDF文件

    主要参考:http://pc510.ev.ncku.edu.tw/models3/netcdf/netcdf.html 转载链接:http://blog.sina.com.cn/s/blog_4a31 ...

  7. cdf文件 mysql,在linux下用fortran读取netcdf文件(以WRF模式输出的数据为例)

    Netcdf是一种数据存储格式,其特点自描述.便携式.易提取.可追加.能共享.其实最大的特点就是易提取数据,打个比方,比如在一座图书馆中,并排放了100个书架,但书架没有编号,让你从中找第8888本书 ...

  8. matlab netcdf 栅格,用matlab生成GMT可以使用的netcdf文件

    用matlab生成GMT可以使用的netcdf文件 作者:Kelsey Jordahl function grdwrite2(x,y,z,file); %GRDWRITE2 Write a GMT g ...

  9. python读取多个文件夹_如何从python中的文件夹中读取多个NetCDF文件

    我试图绘制多年(1979-2014)的平均温度图,我唯一的问题是尝试从文件夹中读取多个NetCDF(.nc)文件.目前我的程序将绘制单个文件,但我不明白如何使其读取文件夹中的所有文件(每年一个).我想 ...

最新文章

  1. dos环境下mysql的访问_MYSQL dos环境下使用
  2. 常见数据结构与算法:拆分数字(暴力递归,动态规划)
  3. kettle 表输入 显示重复_表输入插件详解
  4. Dropout的前世与今生
  5. 如何提高写前端的效率?干货,快进!
  6. php实现笔记共享,[转载]利用memcached在多台服务器之间共享PHP的session数据
  7. java file.length 单位_Java.io.File.length()返回0
  8. python编码规范简单总结
  9. java的cxf的maven_Maven+Spirng+Mybatis+CXF搭建WebService服务
  10. java加按钮_用java写一个简单的学生信息管理系统
  11. 2019最新《web前端课程+项目实践课程》高清无拼凑
  12. FreeSWITCH ODBC cdr
  13. 等额本息PMT和PPMT推导计算公式
  14. 解决 Refused to display in a frame because it set 'X-Frame-Options' to 'deny'.问题
  15. 2022茶艺师(初级)特种作业证考试题库及模拟考试
  16. 考研日记-计算机技术和软件工程的比较
  17. 《疯狂农场》带来的启示
  18. day03_20170514_字符编码/文件存储/函数(一)
  19. 鼓励你大胆追梦的三个移动互联网案例
  20. 一日一Shader·进阶版笔刷【SS_18】

热门文章

  1. pdf转json_如何显著缩小PDF文件大小?
  2. PDF文件压缩有什么方法?如何操作?
  3. 微信php echo换行,微信小程序文字显示换行问题
  4. 长链接短链接拉起拼多多问题
  5. 数字生态大会上,云鼎实验室介绍了这些重要成果
  6. 樊登读书会终身成长读后感_樊登读书会听书《终身成长》学习感悟
  7. LR 杂记--nmon 分析 AIX 和 Linux 性能
  8. 配置文件加密 HikariDataSource
  9. 华为交换机配置时区_华为交换机配置命令
  10. linux内核态延时函数及头文件,Linux内核延时函数