专栏首页MeteoAI最强大的netCDF处理工具

最强大的netCDF处理工具

NCO是目前最强大的处理netCDF文件(包括由netCDF API创建的HDF5文件)的命令行工具,没有之一。NCAR开发NCO起初是为了处理分析GCM(General Circulation Models)数据集,即网格化科学数据集。

随着NCO的开发迭代,其功能也越来越强大。比如简单的算术运算(加、减、乘、除、广播)、插值、统计、数据合并等等。而且针对变量和属性,NCO提供了大量的命令可以编辑变量和属性信息,比如属性和变量重命名、变量和属性值更改\添加、缺失值处理等。

NCO可以跨平台运行,没有系统依赖问题。支持多线程并行操作,提高了运算效率。

安装

通过源码安装NCO可能会出现不少问题,简单直接的安装方式是通过Anaconda提供的conda包管理环境进行安装,安装命令如下:

conda install -c conda-forge nco

命令概览

NCO中包含了很多功能强大且非常实用的命令,下面是NCO中一些命令的简单介绍:

ncap2—netCDF算术工具

ncap2可以说是NCO中最强大的命令,具有相对完整的编程语言的全部特征,包括循环、条件、数组和数学函数。因为其功能强大,NCO每次更新时几乎都会随着更新,其文档也并不完善。在NCO发行文件data/ncap2_tst.nco中可以查到更为详细的描述,data/*.nco文件中包含了更详细的使用方法。

ncap2表达式支持基本的算术操作 (+、-、*、/、^)、 二元操作 (>、>=、<、<=、==、!=、||、&&、>>、<<)、 赋值操作条件表达式 (exp1 ? exp2 : exp3)等, 条件判断语句字符串方法数组控制语句 等。语法形式类似C语言。

ncatted—netCDF属性编辑器

ncatted可以快速直接的编辑netCDF文件属性,包括添加、创建、删除、更改和重写属性。ncatted可以批量更改文件中所有变量属性,但每次操作NCO都会添加操作命令到history全局属性,从而增加history属性的大小。

注意:使用ncatted更改缺失值_FillValue属性时要注意,防止在不同机器操作时,因为浮点精度问题导致兼容性问题。

ncbo--netCDF二元操作

ncbo可以对两个文件执行算术运算,将结果存储到第三个文件。支持+、-、*、/ 四种算术操作。ncbo仅对浮点型变量有效,对坐标变量(保证坐标变量具有物理含义,比如longitude和latitude坐标)和NC_CHAR/NC_STRING类型变量无效。

ncclimo—netCDF Climatology Generator

ncclimo主要是对netCDF文件进行气候方面的操作。可以实现的功能很多。

ncecat—netCDF Ensemble Concatenator

ncecat可以将任意netCDF输入文件合并为单个文件。有两种合并方式:RAG(Record AGgregation),即记录合并,将所有输入文件中的记录合并为连续记录到输出文件;GAG(Group AGgregation),即组合并,将所有输入文件按照组的形式输出到netCDF4文件中。

nces—netCDF Ensemble Statistics

nces对所有输入文件/每个文件中的输入组进行变量的格点统计。nces有两种工作模式:文件集合组集合。文件集合是对所有输入文件进行变量的格点统计,组集合是对文件中的变量进行格点统计。

ncflint—netCDF File Interpolator

ncflint根据输入文件进行线性组合得到输出文件,例如对输入文件进行插值加权平均归一化加权平均。坐标变量仅直接拷贝,不进行上述操作。通常有两种方式执行上述操作:

指定权重:1) 加权平均:给定file1的权重wgt1,则file2的权重可以直接通过1 - wgt1得到。如果给定权重大于1,那么需要同时给定两个权重,比如wgt1=2,wgt2=-3。2) 归一化加权平均:对给定的权重进行归一化,比如wgt1 = wgt1/(wgt1 + wgt2),wgt2 = wgt2/(wgt1 + wgt2)。如果未给定权重值,则默认权重值相同。•插值:和指定权重的方式不同,插值方法是根据给定的输入文件的变量信息,采用线性插值的方式得到输出结果。

上述操作对坐标变量和字符变量无效。

ncks—netCDF Kitchen Sink

ncks可以说是NCO中处理netCDF文件的又一神器(毕竟是厨房神器),是最长使用的命令之一。

ncks可以完成ncdumpnccopy的大部分功能,同时还可以实现文件的提取、分割等操作,还可以根据给定的网格文件对数据进行插值。

此外还可以以ASCII、CDL、JSON等格式输出netCDF文件信息。

ncpdq—netCDF Permute Dimensions Quickly

ncpdq具有两个功能:数据打包维度排列。如果未指定-a选项,ncpdq默认执行数据打包操作。

ncra—netCDF Record Averager

ncra对一系列输入文件中的记录变量进行统计计算,比如计算均值。进行统计计算时也可以给定权重信息,进行加权平均。

ncrcat—netCDF Record Concatenator

合并一些列输入文件的记录变量。默认情况下,最终的记录维度长度是输入文件所有记录维度长度之和。ncrcat可以从标准输入接受大量文件。

输入文件的大小可以是多变的,但是每个文件必须要有一个记录维度。记录坐标应该是单调的。

ncrcat无法解包数据,只能简单的从输入文件拷贝数据和元数据到输出文件。这意味着对于所有输入文件的给定变量而言,使用打包规则压缩的数据必须使用相同的打包参数(即scale_factor和add_offset),否则连接后数据集无法正确解包。

ncremap—netCDF Reapper

ncremap是在NCO V4.5.4引入的新工具,可以将输入文件中的数据重新插值到map_fl、grd_dst或dst_fl选项给定的网格,并输出。ncremap可以使用NCO原生算法进行插值,也可以借助ESMF的ESMF_RegridWeightGen等函数。其主要应用是进行不同网格投影的数据插值变换,比如将WRF模式Lambert投影结果插值到lat-lon投影,或者是对不同模式的网格化结果进行插值变换。

ncrename—netCDF Renamer

ncrename可以重命名netCDF维度,变量,属性和组。每个对象都有一个旧名称和新名称。所有的新名称必须是独一无二的。每一个旧名称必须存在于输入文件中,除非旧名称之前以 . 开头。在重命名之前,不会检查旧名称是否存在。因此,如果旧名称没有以 . 开头,当旧名称不存在时,ncrename将终止重命名。. 表示旧名称存在与否是可选的,如果存在就替换,不存在就跳过。新名称不应以 . 开头。

ncwa—netCDF Weighted Averager

ncwa可以对单个输入文件中任意维度的变量执行统计计算,可以给定权重、掩膜信息或归一化。

NCO提供的上述命令几乎涵盖了平时对netCDF处理的方方面面,可以说是处理netCDF最强大的工具,最大的缺点就是无法执行可视化操作。

NCO也提供了Python的封装版本[1],但功能可能没有直接使用NCO命令行工具强大,感兴趣的可以直接查看github链接。

除了NCO之外,还有一个用于处理netCDF文件的命令行工具--CDO,也有对应的Python封装版本,感兴趣的可以查看。

此次仅对上述命令进行简要介绍,下次再详细介绍常用命令的使用方法。

本文分享自微信公众号 - MeteoAI(meteoai),作者:bugsuse

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nature(2019)-地球系统科学领域的深度学习及其理解

    Machine learning approaches are increasingly used to extract patterns and insigh...

    zhangqibot
  • Python绘制气象实用地图[Code+Data](续)

    上一期,对Python绘制气象实用地图做了比较详细的介绍,尽管已经能够满足部分需求了,但是,在实际的应用需求中,可能还是别的需求,那么,今天就手把手教大家如何绘...

    zhangqibot
  • 如何用python画图——带你入门matplotlib

    matplotlib是python中常用的一个可视化库,大多数的操作与MATLAB非常类似,所以对于从MATLAB迁移到python的朋友是非常友好的。matp...

    zhangqibot
  • 使用 JS 及 React Hook 时需要注意过时闭包的坑(文中有解决方法)

    下面定义了一个工厂函数 createIncrement(i),它返回一个increment函数。之后,每次调用increment函数时,内部计数器的值都会增加i...

    前端小智@大迁世界
  • 2期-软测面试理论题

    1>LR中”denglu”事物前插入一个名叫”zelin’的集合点的函数为:lr_rendezvous (”zelin”);

    测试小兵
  • 服务器命名方案

    码农二狗
  • 旋转物体上的增强现实

    WolframChina
  • 【全球AI芯片榜单】中国大陆企业无缘前十,华为、寒武纪、地平线扛鼎突围!

    新智元
  • iOS原生Loading效果

    Dwyane
  • SecureCRT 实用配置

    Secure CRT,是一款支持 SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等协议的终端仿真程序,...

    阳光岛主

扫码关注云+社区

领取腾讯云代金券