NetCDF (.nc)

背景

    • MIME 类型:application/x-netcdf
    • NetCDF 数据文件格式.
    • 交换科学数据的自我描述格式.
    • 用于大气研究、GIS 以及相关领域.
    • NetCDF 是 network Common Data Form(网络常用数据形式)的缩写.
    • 二进制文件格式.
    • 概念上基于 NASA 的常用数据格式(Common Data Format),但不与其兼容.
    • 由大气研究大学联盟(University Corporation for Atmospheric Research (UCAR))的 Unidata 中心开发.

Import 与 Export

  • Import["file.nc"] 导入一个 netCDF 文件,返回存储在文件中的数据集名称.
  • Import["file.nc",elem] 从 netCDF 文件导入指定参数.
  • 导入格式可以用 Import["file","NetCDF"] Import["file",{"NetCDF",elem,}] 指定.
  • Export["file.nc",expr] 将一个数据数组导出至 netCDF 文件.
  • Export["file.nc",{expr1,}, {"Datasets",{"dataset1",}}] 创建一个 netCDF 文件,以独立的数据集存储数据数组{expr1,}.
  • Export["file.nc",expr,elem]通过把 expr 作为指定参数 elem 创建一个 netCDF 文件.
  • Export["file.nc",elem1->expr1,,"Rules"] 使用规则指定要导出的参数.
  • 请到以下参考页面了解完整的基本信息:
  • Import, Export从文件导入或导出到文件
    CloudImport, CloudExport从云对象导入或导出到云对象
    ImportString, ExportString从字符串导入或导出到字符串
    ImportByteArray, ExportByteArray从字节数组导入或导出到字节数组

Import 参数

  • Import 的通用参数:
  • "Elements" 该文件可用的参数和选项列表
    "Summary"文件摘要
    "Rules"所有可用参数的规则列表
  • 结构参数:
  • "Datasets"所有数据集的名称
    "Groups"所有组的名称
    "StructureGraph"显示数据集结构的有向图
    "StructureGraphLegend"结构图的图例
    "Summary"属性摘要
    "Version"文件的 NetCDF 版本
  • 分组和数据集的名称作为以根组名称 "/" 开头的绝对路径给出.
  • 默认情况下,Import 对 NetCDF 格式使用 "Datasets" 参数.
  • 表示数据的参数:
  • "Data"导入为数组列表的所有数据集
    {"Data",dataset} or dataset命名数据集
  • 支持以下基本数据类型:
  • "Integer8"8 位整数
    "Integer16"16 位整数
    "Integer32"32 位整数
    "Integer64"64 位整数
    "UnsignedInteger8"8 位无符号整数
    "UnsignedInteger16"16 位无符号整数
    "UnsignedInteger32"32 位无符号整数
    "UnsignedInteger64"64 位无符号整数
    "Real32"IEEE 单精度数
    "Real64"IEEE 双精度数
    "String"ASCII 字符的字符串
  • 支持以下结构化数据类型:
  • "ByteArray"任意长度的 ByteArray
    "Enum"列举
    "Compound"由任何其他数据格式和其他复合数据集组成的复合数据集
  • 元数据元素:
  • "Attributes"所有组和数据集的属性
    "DataEncoding"指定每个数据集的压缩方式
    "DataFormat"用于表示每个数据集的类型
    "Dimensions"每个数据集的数据维度
    "DimensionNames"每个数据集的维度名称
    {"metadata",dataset}命名数据集的元数据
    "Metadata"全局属性(根组的属性)

Export 参数

  • Export 通用参数:
  • "Rules"elemexpr 形式导入参数列表
  • Export["file.nc",{elem1->expr1,},"Rules"] 使用规则来指定要导出的元素.
  • 可用的 Export 参数:
  • "Attributes"与组和数据集关联的属性
    "Datasets"数据集及其相关元素
    "Dimensions"数据集的维度
    "Groups"组名列表
    "NamedDataTypes"有命名的数据类型
  • 使用 "Attributes" 参数,可以给出以下表达式:
  • attr与根组/关联的属性
    {path1attr1,}与指定 pathi 相关联的属性 attri
  • 属性 attri 应用 "attname"->attval 格式给出.
  • 使用 "Datasets" 参数,可以给出以下表达式:
  • data使用 "Datasets" 参数,可以给出以下表达式:
    {"name1"data1,}数据集名称及其关联数据的列表
    {"name1"ds1,}使用规则列表指定每个数据集 dsi
  • 数据集 dsi 可取用以下键:
  • "Attributes"数据集属性
    "Data"数据数组
    "DataEncoding"要使用的一种或多种数据编码
    "DataFormat"数据类型
    "DimensionNames"与数组维度关联的名称
  • "NamedDataTypes" 参数可以是 {"name1"type1,} 列表,其中每一个 typei 可以是以下形式的关联:
  • <|"Class""ByteArray",|>"Length"
    <|"Class""Compound",|>"Dimensions""Structure"
    <|"Class""Enumerated",|>"DataFormat""Structure"
    <|"Class""RaggedArray",|>"DataFormat""Dimensions"

选项

  • Export 选项:
  • ByteOrdering$ByteOrdering使用哪一种字节顺序
    OverwriteTargetTrue是否覆盖已有文件
    "Version""NC4 Enhanced"所创建文件格式的版本
  • 使用 OverwriteTarget->"Append",可以将新对象添加到现有文件中。
  • "Version" 的可能值为:"Classic" (Version 3)、"Classic 64bit"、"NC4 Classic""NC4 Enhanced" (Version 4).

范例

打开所有单元关闭所有单元

基本范例  (3)

获取存储在 netCDF 文件中的数据集名称:

获取文件摘要:

从一个 netCDF 文件中读取元信息:

把光栅图像数据导出为 netCDF 格式:

以下给出存储在文件中的数据集名称:

范围  (13)

Import  (7)

显示文件中可用的所有元素:

默认情况下,Import 返回文件中的数据集列表:

明确指定格式导入文件结构:

通过指定名称导入数据集的内容:

为文件中的所有数据集导入维度和数据格式:

导入单个数据集的维度和数据格式:

导入数据集:

将导入的数据渲染为图形:

Export  (6)

将一个矩阵导出到 NetCDF:

显示该文件中包含的数据集:

导出有名称的数据集:

将两个矩阵导出到 NetCDF:

导出具有给定数据类型的命名数据集:

导入数据格式:

导出组中的命名复合数据类型:

导入文件结构:

导出具有属性的命名数据集:

特定组的导入属性:

导入存储在文件中的所有属性:

Import 参数  (23)

Attributes  (3)

导入文件中所有组和数据集的属性:

导入特定数据集的属性:

导入多个对象的属性:

数据  (3)

从文件中的所有数据集中获取数据:

从 "MyGroup" 组内的 "MyData" 数据集导入数据:

从单个数据集导入数据时,不应专门提供 "Data" 元素:

从多个数据集导入数据:

DataFormat  (2)

获取文件中每个数据集的数据类型描述:

简单的数字和字符串类型有一个词描述:

"DataFormat" 用于复合类型显示类和结构:

"DataFormat" 用于枚举类型包括类、基本数据格式以及值和名称列表:

Datasets  (2)

导入文件中所有数据集的名称:

"Datasets" 是默认的 netCDF 元素:

Dimensions  (3)

获取文件中所有数据集的维度:

只有一个元素的数据维度由一个空列表表示:

获取特定数据集的维度:

DimensionNames  (2)

获取文件中所有数据集的维度名称:

获取特定数据集的维度名称:

Groups  (1)

导入文件中所有组的名称:

Metadata  (2)

获取文件元数据(根组的属性):

元数据通常携带有关数据源的信息:

NamedDimensions  (3)

导入文件中的所有命名维度:

维度可能是无限的:

导入命名维度以获取沿此维度的坐标值:

检查属性通常会提供有关维度的更多信息:

根据从属性中获取的信息来解释时间坐标:

Summary  (1)

获取文件摘要:

Version  (1)

获取 netCDF 格式的版本:

NetCDF 支持版本 4:

Export 参数  (25)

"Attributes"  (4)

将属性附加到根组:

指定属性的数据格式:

导出同时有 "Datasets""Attributes" 参数的数据集参数:

每个属性的名称必须在附加到同一对象的所有属性中唯一:

覆盖现有文件中的属性值:

"Datasets"  (10)

"Datasets" 是默认的导出参数. 数据格式和维度从表达式自动推断:

将表达式导出到不同的数据集中,每个数据集都可以有一个完整路径:

检查 NetCDF 文件的结构:

将数据集导出为自定义格式:

导出具有属性的数据集:

创建一个具有单个整数的标量数据集:

创建一个整数数组:

导出实数数组:

使用字符串创建数据集:

ByteArray 存储为 "ByteArray" 类型(在 NetCDF4 中也称为不透明类型):

与字符串键的关联被导出为复合类型的元素:

"Groups"  (2)

NetCDF 文件总是有一个根组(路径为/):

通过给出路径列表导出多个组:

"NamedDatatypes"  (3)

将复合命名数据类型导出到 NetCDF 文件:

导出数据集时使用先前导出的类型:

数据集的导入数据格式和维度:

检查导出的数据:

导出嵌套复合类型:

简单的标量类型不能存储在 NetCDF 文件中:

"NamedDimensions"  (5)

NetCDF 数据集的每个维度在文件中都必须作为单独的实体存储。如果未明确指定维度的名称,将为其自动生成并分配名称:

明确指定维度名称:

"name"size 格式显式导出维度,其中 表示无限维度大小:

在定义数据集时可以使用有名称的维度:

注意 "x" 维度的大小增加:

查看文件结构:

导出具有显式坐标值的维度,该坐标值将存储在同名数据集中:

创建一个仅指定前几个坐标的无限维度:

"Rules"  (1)

用规范 "Rules" 导出两个矩阵:

Export 选项  (6)

OverwriteTarget  (2)

默认情况下,每次调用 Export:都会创建一个新的文件:

OverwriteTargetFalse,现有文件将不会被覆盖:

要将数据集附加到现有文件,请使用 OverwriteTarget"Append"

"Version"  (4)

默认情况下,Export 创建具有增强数据模型的 NetCDF4 文件:

将数据导出为经典 NetCDF 格式:

将数据导出为具有 64 位偏移的经典 NetCDF 格式:

使用经典数据模型将数据导出为 NetCDF4 格式:

应用  (1)

下载带有海面温度数据的 netCDF 文件:

导入有关文件的一般信息:

获取文件中所有数据集的列表:

读取每个数据集的属性:

获取每个数据集的描述以查看所包含的内容:

读取 "/sst" 数据集的所有属性:

导入数据集的维度;请注意,时间是第一个维度:

读取数据:

确定收集数据的范围(先去除重复的)并添加一个小的边距:

可视化海面温度的变化:

通过检查元数据了解有关文件内容的更多信息,例如,如何收集数据:

属性和关系  (1)

每个 netCDF4 文件也是一个有效的 HDF5 文件:

并非每个 HDF5 文件都是有效的 netCDF 文件:

并非每个 HDF5 文件都是有效的 netCDF 文件: