首页 > 编程 > Python > 正文

利用python如何处理nc数据详解

2020-02-23 00:12:45
字体:
来源:转载
供稿:网友

前言

这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是“知难行易”还是“知易行难”都不能充分的说明问题,还是“知行合一”来的更靠谱些,既要知道理论又要知道如何实现,于是经过不太充分的研究后总结成此文,以记录如何使用 python 处理 nc 数据。

一、nc 数据介绍

nc 全称 netCDF(The Network Common Data Form),可以用来存储一系列的数组,就是这么简单(参考https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_introduction.html)。

既然 nc 可以用来一系列的数组,所以经常被用来存储科学观测数据,最好还是长时间序列的。

试想一下一个科学家每隔一分钟采集一次实验数据并存储了下来,如果不用这种格式存储,时间长了可能就需要创建一系列的 csv 或者 txt 等,而采用 nc 一个文件就可以搞定,是不是很方便。

更方便的是如果这个科学实验与气象、水文、温度等地理信息稍微沾点边的,完全也可以用 nc 进行存储, GeoTiff 顶多能多存几个波段(此处波段可以认为是气象、水文等不同信号),而 nc 可以存储不同波段的长时间观测结果,是不是非常方便。

可以使用 gdal 查看数据信息,执行:

gdalinfo name.nc

即可得到如下信息:

Driver: netCDF/Network Common Data FormatFiles: test.ncSize is 512, 512Coordinate System is `'Subdatasets: SUBDATASET_1_NAME=NETCDF:"test.nc":T2 SUBDATASET_1_DESC=[696x130x120] T2 (32-bit floating-point) SUBDATASET_2_NAME=NETCDF:"test.nc":PSFC SUBDATASET_2_DESC=[696x130x120] PSFC (32-bit floating-point) SUBDATASET_3_NAME=NETCDF:"test.nc":Q2 SUBDATASET_3_DESC=[696x130x120] Q2 (32-bit floating-point) SUBDATASET_4_NAME=NETCDF:"test.nc":U10 SUBDATASET_4_DESC=[696x130x120] U10 (32-bit floating-point) SUBDATASET_5_NAME=NETCDF:"test.nc":V10 SUBDATASET_5_DESC=[696x130x120] V10 (32-bit floating-point) SUBDATASET_6_NAME=NETCDF:"test.nc":RAINC SUBDATASET_6_DESC=[696x130x120] RAINC (32-bit floating-point) SUBDATASET_7_NAME=NETCDF:"test.nc":SWDOWN SUBDATASET_7_DESC=[696x130x120] SWDOWN (32-bit floating-point) SUBDATASET_8_NAME=NETCDF:"test.nc":GLW SUBDATASET_8_DESC=[696x130x120] GLW (32-bit floating-point) SUBDATASET_9_NAME=NETCDF:"test.nc":LAT SUBDATASET_9_DESC=[130x120] LAT (32-bit floating-point) SUBDATASET_10_NAME=NETCDF:"test.nc":LONG SUBDATASET_10_DESC=[130x120] LONG (32-bit floating-point)Corner Coordinates:Upper Left ( 0.0, 0.0)Lower Left ( 0.0, 512.0)Upper Right ( 512.0, 0.0)Lower Right ( 512.0, 512.0)Center ( 256.0, 256.0)

每一个 SUBDATASET 表示记录的是一种格式的数据(气象、水文等等),如果要想查看此 SUBDATASET 的具体信息,可以执行:

gdalinfo NETCDF:name.nc:SUBDATASET_NAME
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表