【Python实例】netCDF数据介绍及处理

netCDF数据处理

  • netCDF数据介绍
  • [1 netCDF数据结构](#1 netCDF数据结构)
    • [1.1 维度(Dimensions)](#1.1 维度(Dimensions))
    • [1.2 变量(Variables)](#1.2 变量(Variables))
    • [1.3 坐标变量(Coordinate Variables)](#1.3 坐标变量(Coordinate Variables))
    • [1.4 属性(Attributes)](#1.4 属性(Attributes))
  • [2 netCDF数据处理](#2 netCDF数据处理)
  • 参考

netCDF数据介绍

NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络的数据的描述和编码标准。

NetCDF官方介绍

netcdf4-python官方文档

1 netCDF数据结构

netCDF存储为包含两个部分的单个文档:

  • 文件头,包含维度(dimensions), 属性(attributes)和变量(variables)的所有信息,但不包含变量数据(variable data)
  • 数据部分,由固定大小数据(fixed-size data,存储有限维度变量的数据)和可变大小数据(variable-size data,存储具有无限维度变量的数据

1.1 维度(Dimensions)

netCDF的维度具有名称和长度,维度的长度可以为任意正整数,只是在经典的netCDF数据集中只有1个维度可以具有无限长度,而在netCDF4中可以使用任意数量的无限维。这样的维度称为无限维度或者记录维度,具有无限维度的变量可以沿该维度增长至任意长度。无限维度索引就像传统面向记录的文件的记录编号。

netCDF经典数据集最多可以具有一个无限维度(不是必要的)。如果一个变量具有无限维度,这个维度必须是最重要的。因此任何无限维度都必须是CDL形状中的第一个维度和相应C数组声明中的第一个维度。而在netCDF4数据集中可以有多个无限维度,并且在变量维度列表中的顺序没有限制。要沿无限维度增长变量,请使用任何netCDF写入数据写入函数写入数据,并将无限维度的索引指定为所需的记录编号,netCDF库将写入所需的记录数量(使用填充值填充任何干预记录,除非关闭该功能)。如纬度,经度,高度和时间,前三个分配固定的长度,时间赋予UNLIMITED,这意味着它是无限的维度。

1.2 变量(Variables)

变量用于将大量数据存储在netCDF数据集中,变量表示一组具有相同类型的值。标量被当作0维数据,一个变量具有名称、数据类型和形状,形状有创建变量时指定的维度列表描述。变量还可能具有关联的属性,这些属性可以在创建变量后添加、删除或更改。

1.3 坐标变量(Coordinate Variables)

变量与维度同名是合法的,这些变量对于netCDF库没有特殊意义,但是有一个约定,就是使用此库的软件应该应以特殊方式处理此类变量。与维度同名的变量称为坐标变量,它通常定义为该维度对应的物理坐标。

1.4 属性(Attributes)

NetCDF 属性用于存储有关数据的数据(辅助数据或元数据),在许多方面类似于存储在传统数据库系统中的数据字典和架构中的信息。大多数属性提供有关特定变量的信息。属性比变量或维度更具动态性;它们可以被删除,并在创建后更改其类型、长度和值,而 netCDF 接口不提供删除变量或更改其类型或形状的方法。

2 netCDF数据处理

netCDF 文档有五种类型(NETCDF3_CLASSIC、NETCDF3_64BIT_OFFSET、NETCDF3_64BIT_DATA、NETCDF4_CLASSIC 和 NETCDF4)。

方法1:利用netCDF4打开nc格式数据

2.1.1 安装netcdf4库

clike 复制代码
pip install netCDF4
# 或者使用conda
conda install -c conda-forge netCDF

基于pip安装netcdf4库界面如下:

2.1.2 创建/打开/关闭netCDF文件

要从 python 创建 netCDF 文档,只需调用 Dataset 构造函数即可。这也是用于打开现有 netCDF 文件的方法。

确保资源能够释放,在文件的读写时使用with语句:

clike 复制代码
import netCDF4 as nc

with nc.Dataset("./demo.nc", "a") as dataset:
    print(dataset.data_model)

2.1.2 netCDF创建示例

方法2:利用xarray打开nc格式数据

存储 xarray 数据结构的推荐方法是netCDF,它是一种二进制文件格式,适用于起源于地球科学的自描述数据集。Xarray是基于netCDF数据模型,所以磁盘上的netCDF文件直接对应Dataset对象(更准确的说,netCDF文件中的一个组直接对应一个Dataset对象,详见Groups)。

参考

相关推荐
AI小怪兽7 分钟前
基于YOLOv13的汽车零件分割系统(Python源码+数据集+Pyside6界面)
开发语言·python·yolo·无人机
wszy180918 分钟前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
Z1Jxxx20 分钟前
加密算法加密算法
开发语言·c++·算法
Eric.Lee202128 分钟前
python实现 mp4转gif文件
开发语言·python·手势识别·手势交互·手势建模·xr混合现实
EntyIU31 分钟前
python开发中虚拟环境配置
开发语言·python
wszy180933 分钟前
顶部标题栏的设计与实现:让用户知道自己在哪
java·python·react native·harmonyos
kaizq1 小时前
AI-MCP-SQLite-SSE本地服务及CherryStudio便捷应用
python·sqlite·llm·sse·mcp·cherry studio·fastmcp
charlie1145141911 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
wjs20241 小时前
Bootstrap5 消息弹窗
开发语言
资生算法程序员_畅想家_剑魔1 小时前
Kotlin常见技术分享-02-相对于Java 的核心优势-协程
java·开发语言·kotlin