加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

NCL基础讲解(八)——输出篇之Output NetCDF

(2015-12-22 13:45:32)
标签:

杂谈

NCL基础讲解(八)——
输出篇之Output NetCDF
兰溪之水   2015-12-21
     上一期“数据处理”,给大家列举了数据处理中一些比较有用的函数,希望大家能熟练运用。从这一期开始,我们将进入NCL脚本的基本流程“加载函数库→读入数据→处理数据→数据文件输出或图形输出”中的最后一环节——“数据文件输出或图形输出”。这一期简单介绍“数据文件输出”~
      数据处理完,我们常常会把结果保存起来备用,如果下次还要用到这个结果进行可视化等处理,就可以节省处理数据的时间,特别是在处理数据计算比较复杂,数据量大的情况,可以节省重复处理数据耗费的时间~
       NCL支持输出的文件格式有NetCDF,HDF4,binary和ASCII。推荐给大家输出格式,其实兰溪都不知道强调多少次了,那就是NetCDF和ASCII,对于较为简单的结果,比如几行,类似于表格的形式,那就输出ASCII,这个兰溪在第五期关于ASCII文件读写的时候已经提到了,这里就不在重复了~一般对于比较复杂的数据,很多变量,多维的数组,那当然选择NetCDF较为合适~
       NCL与NetCDF可谓是一日不见如隔三秋啊,今天又是它们相见的日子啦!目前NCL支持输出4种NetCDF类型文件:classic, 64-bit offset, netCDF-4 classic, 和netCDF-4(https://www.ncl.ucar.edu/Document/glossary.shtml#netCDF)。一般情况下,我们都会选择比较简单的NetCDF-3, NetCDF-3 64-bit offset, NetCDF-4 classic几种类型,而对于NetCDF-4(V6.1.1及以上支持),它具有更多优点,压缩性好,支持多个不限定维,支持更复杂的数据类型,有兴趣可以到官网学习(https://www.ncl.ucar.edu/Applications/o-netcdf.shtml)。
      对于写NetCDF文件,通常有两种方式,一种是不需要文件预定义,直接输出变量到NetCDF文件,比较简单,也较为常用,但是如果变量很多,数组很大,输出效率可能会比较低,这种方式在“一张图NCL入门”也有简单提到;另一种方式是定义模式,预先定义好输出文件的变量和属性,效率比较高,但需要写更多的代码,推荐在输出大文件或变量比较多的时候使用
https://www.ncl.ucar.edu/Applications/o-netcdf.shtml)。

方法一
直接输出变量,毋需预定义
       这种方法,直接准备好要输出的“”变量,也就是要有完整坐标和基本属性(long_name, units, _FillValue)的变量,然后使用addfile函数和“->”符号即可将准备好的变量写入文件:
http://tc/maxwidth.2048/tc.service.weibo.com/p/img_xiumi_us/22e3b642a364c6c052ecc7dac112f73e.pngNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />
   输出结果,可以使用“ncl_filedump method_1_output.nc”或者“ncdump –h method_1_output.nc”查看即可~

方法二
文件预定义方式
     预定义方式需要事先定义输出文件所包含的内容,如文件属性,文件包含的变量,变量的坐标,变量的属性等等,与Fortran写NetCDF文件类似。用于预定义的一些函数有:
- setfileoption: 一系列文件格式的设定,具体见官网函数说明
- fileattdef: 定义文件的全局属性
- filedimdef: 定义文件中的维度名、维大小、不限定维等
- filevardef: 定义一系列变量的变量名、变量类型和变量坐标名等
- filevarattdef: 定义变量的属性
脚本示例:
(数据:
https://www.ncl.ucar.edu/Applications/Data/cdf/uvt.nc

http://tc/maxwidth.2048/tc.service.weibo.com/p/img_xiumi_us/7e8a3eae8a15bed553491d66d60c76d8.pngNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />
http://tc/maxwidth.2048/tc.service.weibo.com/p/img_xiumi_us/3e87d2f0aa369eb16de53adb1b63d46a.pngNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />
http://tc/maxwidth.2048/tc.service.weibo.com/p/img_xiumi_us/97882cbefe620766656cce5ec8050501.jpgNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />

这期就这么多,白了个白~
广告时间
   直接回复“气象家园”的微信公众号“ncl”即可获取本NCL基础讲解系列教程~
下期预告
下期开始,我们将进入“成果输出篇”——图形输出
延伸阅读
http://tc/maxwidth.2048/tc.service.weibo.com/p/img_xiumi_us/97882cbefe620766656cce5ec8050501.jpgNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />

光说不练假把式
 看得多,还不如“”得多,“”得多~多练练手吧~(●—●) ~
http://tc/maxwidth.2048/tc.service.weibo.com/p/statics_xiumi_us/b2003f7af44fffe75364cdae0a58ca29.pngNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />
[本文作者(兰溪之水)保留著作权和最终解释权,已授权大气科学进展官方微博气象家园微信公众号首发。本文可用于教育,科研等非商业用途转载,转载请务必注明来源并附有原文链接。商业用途转载请提前与本文作者联系,经允许后方可转载,如有违反,本文作者保留权利]
关注我们
—气象家园论坛—
气象家园  bbs.06climate.com
—气象家园微信—
微信名:气象家园  微信号:climate06
—大气科学进展官方微博—
新浪微博:@大气科学进展
—大气科学进展官方微信—
微信名:大气科学进展 微信号:IAPAAS1984
http://ww2/large/e7d0ac34gw1ez8dpg0fdcj21110lggqc.jpgNetCDF" TITLE="NCL基础讲解(八)——输出篇之Output NetCDF" />  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有