前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最强大的netCDF处理工具

最强大的netCDF处理工具

作者头像
MeteoAI
发布2019-07-24 16:43:01
13K3
发布2019-07-24 16:43:01
举报
文章被收录于专栏:MeteoAI

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

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

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

安装

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

代码语言:javascript
复制
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封装版本,感兴趣的可以查看。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MeteoAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ncap2—netCDF算术工具
  • ncatted—netCDF属性编辑器
  • ncbo--netCDF二元操作
  • ncclimo—netCDF Climatology Generator
  • ncecat—netCDF Ensemble Concatenator
  • nces—netCDF Ensemble Statistics
  • ncflint—netCDF File Interpolator
  • ncks—netCDF Kitchen Sink
  • ncpdq—netCDF Permute Dimensions Quickly
  • ncra—netCDF Record Averager
  • ncrcat—netCDF Record Concatenator
  • ncremap—netCDF Reapper
  • ncrename—netCDF Renamer
  • ncwa—netCDF Weighted Averager
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档