使用Python读取NetCDF格式数据

前言

NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”,它是由美国大学大气研究协会的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据描述和编码标准。

NetCDF和zip、jpeg、bmp文件格式类似,都是一种文件格式的标准。NetCDF文件开始时目的是用于存储气象科学中的数据,现在已经成为许多数据采集软件生成文件的格式。利用NetCDF可以对网络数据进行高效地存储、管理、获取和分发等操作。由于其灵活性,能够传输海量的面向阵列(array-oriented)数据,目前广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。

结构形式包含维数、变量、属性和数据四个子域,从数学上来说,netcdf存储的数据就是一个多自变量的单值函数。用公式来说就是f(x,y,z,...)=value,函数的自变量x,y,z等在netcdf中叫做维(dimension)或坐标轴(axis),函数值value在netcdf中叫做变量(Variables)。而自变量和函数值在物理学上的一些性质,比如计量单位(量纲)、物理学名称等等在netcdf中就叫属性(Attributes)。

Python读取NetCDF文件可以选择安装NetCDF4或者xarray工具包,这一小节主要学习了解NetCDF4为主。

安装

NetCDF github地址: https://github.com/Unidata/netcdf4-python
NetCDF 指导文档:https://www.unidata.ucar.edu/software/netcdf/docs/index.html

安装依赖包

sudo apt-get update
sudo apt install build-essential libnetcdf-dev libhdf5-dev

使用pip工具进行安装

pip install netCDF4

Python读取示例

nc_path = "./air.sfc.1997.nc"

# 读入文件:使用netCDF4的Dataset方法即可读入文件,读入文件后直接输出即可查看文件的结构。
nc = Dataset(nc_path)
print(nc)

# 查看文件的变量:
print(nc.variables.keys())
for x in nc.variables.keys():
    print(x)

# 查看某个变量的信息:
print(nc.variables['air'])

# 查看某个变量的属性:
print(nc.variables['air'].ncattrs())

# 读取数据值
data = nc.variables['air'][:]
print(data)

可视化工具

Panoply软件(不需安装,提前配置JAVA SE即可)
下载地址:https://www.giss.nasa.gov/tools/panoply/

Screenshot of sample Panoply windows

数据下载

NECP/NCAR再分析数据库,ICOADS数据库,包括气温、降雨、湿度、下行辐射、上行辐射等; 分辨率0.06°、0.25°、1.0°、2.5°等。

下载地址 https://www.esrl.noaa.gov/psd/data/gridded/

posted @ 2021-09-04 22:19  ololvvv  阅读(2188)  评论(0编辑  收藏  举报