ncl入门_图文文库

上传人:飞*** 文档编号:53160767 上传时间:2018-08-28 格式:PPT 页数:108 大小:7.85MB
返回 下载 相关 举报
ncl入门_图文文库_第1页
第1页 / 共108页
ncl入门_图文文库_第2页
第2页 / 共108页
ncl入门_图文文库_第3页
第3页 / 共108页
ncl入门_图文文库_第4页
第4页 / 共108页
ncl入门_图文文库_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《ncl入门_图文文库》由会员分享,可在线阅读,更多相关《ncl入门_图文文库(108页珍藏版)》请在金锄头文库上搜索。

1、NCL入门,蔡宏珂 2018年8月28日,提纲,概述 语法基础 文件读写 函数过程 图形绘制,NCL简介,专为(大气)科学 数据分析和可视化 程序设计语言,NCL优势和缺点,足够便捷 较低的学习成本 简练的文件和图形接口 良好的文档和示例 足够强大 丰富而有针对性的函数库 漂亮而易操作的可视化结果 缺点 解释性语言,运行效率较低 没有原生内置的调试程序 只支持ANSI,不支持Unicode,netCDF-3、netCDF-4 classic、netCDF-4、HDF4、二进制、ASCII文本 HDF-EOS2、HDF-EOS5、GRIB1、GRIB2、OGR,图例展示,图例展示,图例展示,图例

2、展示,图例展示,图例展示,图例展示,图例展示,预备知识,了解基本的计算机知识 数制的转换和计算 数据的表示和存储 掌握基本的Linux系统操作 了解必要的数值计算方法 掌握常用的统计分析方法,学习方法,计算机的基础工具性质决定:要掌握程序设计,不能全凭讲解,也不能单靠对知识术语的记诵,非依靠“多看多练”不可 http:/www.ncl.ucar.edu/ 读书是学习,使用也是学习,而且是更重要的学习 计算机语言是一种工具,仅仅学习语言规则还远远不够,最重要的是学会针对各种类型的问题而拟订出有效的解题方法和步骤算法,课程目标,熟悉基本概念和基本操作,学会简单编程 掌握一定的数据分析和绘图技巧,为

3、以后实践、研究、工作做准备,安装和配置 解压或复制 https:/www.earthsystemgrid.org/dataset/ncl.html 设置环境变量 /.bashrc export NCARG_ROOT=/opt/NCL/ export PATH=$NCARG_ROOT/bin:$PATH 配置编辑器 语法高亮、代码提示、源码控制、FTP/SFTP集成,运行 命令行交互 脚本 ncl 选项 参数 Script.ncl,语法基础,数组 运算符 流程控制,思考:物理量的描述,物理量的描述要同时用数字和单位来描述,否则不能产生任何物理意义,0有意义吗? 1有意义吗? 2有意义吗?,P=1

4、000? hPa,200m Pa,31km,数组数据模型,数据:相同类型元素构成的有限有序集 说明:包括但不限于物理意义 数据模型:基于NetCDF,自描述,数组变量命名,变量定义必须以字母开头,允许字母、数字和下划线 避开保留字和内置、自定义函数/过程 大小写敏感,数组数据类型,数值类型转换: 隐式转换以不丢失信息为原则,否则会产生致命错误;若必须丢失信息,则使用显示转换。 科学计数法: 单精度float型采用e或E,双精度double型采用d或D 根据数据自动安排类型,integer/float判断小数点,数组数据集,(/) 静态数组,一经定义,不能改变类型和尺寸 声明、定义、初始化:三合

5、一 无须声明,第一次赋值就是定义 也可以通过new定义并声明类型 不强制要求在语句块开头 初始化默认赋填充值 存储顺序以右侧优先,与C相似,integer不能变成float,4*5不能变成5*4,尽管占用的空间相同 不支持变长数组,不能给已有数组增减元素,数组自描述说明:属性attribute, 特殊变量,对数据类型、尺寸等无限制,但一经定义即不可改变 _FillValue 填充值,多见于缺测或无效数据 long_name 名称,多用于指明物理量 units 单位,NCL在计算或绘图时可能会根据单位进行相应处理,经度degrees_east,纬度degrees_north,高度km或气压坐标h

6、Pa,时间hours since 1990-1-1 add_offset 偏移量 scale_factor 缩放倍率,示例,T: short Tlong_name=“Temperature” Tunits=“K” T_FillValue=-99 Tscale_factor=0.01 Tadd_offset=-70 Tsource=“Observed in Renming Park Station”,数组属性的应用:偏移量和缩放倍率,add_offset,偏移量,负数以正数形式存储 scale_factor,缩放倍率,浮点数以整数形式存储 实际值=存储值*scale_factor+add_off

7、set,温度,通常为-7060之间的两位小数 存储值=(实际值+70)*100,变成013000之间的整数 4字节float变成2字节short型,节省文件存储空间和网络传输成本 scale_factor=0.01 add_offset=-70 读取时,将存储值乘以0.01,再减去70即可 NCL提供了现成方法以方便处理,数组自描述说明:维度dimension及其物理意义,命名维度! 给维度起名 维度坐标& 给维度定位 以一个一维数组A作为另一个数组B(通常是多维数组)其中一个维度的坐标/索引 A数组也可有其自身的属性 命名维度和维度坐标的区别 命名维度是名字,字符串,不依赖于坐标维度 维度坐

8、标是数据,数值,定义和引用均依赖于命名维度,T!0=“Time” T!1=“Lat” T!2=“Lon” T!3=“Lev”,T&Lat=(/-90,-80,-70,80,90/),a=(/-180,-170,170,180/) along_name=“Longitude” aunits=“degrees_east” T&Lon=a,数组索引,数组引用,序号索引 根据数据存储顺序 正整数 起始索引(0):结束索引(N-1):可选步长(1) 维度索引 根据维度坐标 整数和浮点数都可以,正负都可以 一般具有物理意义,理解和使用更便捷 序号索引和维度索引的形式上的区别:,数组变形,改变维度顺序 借助

9、命名维度,符号| 缩减维度 array(k,.)自动省略单一维度,其它维度按顺序保留 array(k:k,.)强制保留单一维度,T2=T(Lat|:,Lon|70:140,Lev|200:10,Time|0:5),数组显示结果,print printMinMax printVarSummary write_matrix procedure write_matrix(data*:numeric,fmtf:string,option:logical ),数组练习,思考:维度调整和截选范围如何同时进行? T(Time,Lat,Lon,Lev)调整成高度、纬度、经度、时间顺序,并截取青藏高原数据,Re

10、sult=T(Lev|:,Lat|26:40,Lon|73:105,Time|:),语法符号,代数和逻辑运算符,流程控制顺序结构,自上而下按部就班地运行 没有行结束符,一条语句就是一行,换行必须在行尾使用续行符,流程控制选择结构,只有二叉分支,没有elseif语句和switch/case结构等多叉分支 逻辑判断从左至右执行,因此将最可能的“假”放在左边,流程控制循环结构,break退出循环 continue跳过本次循环 同其它解释性语言一样,NCL循环效率低下,尽量使用数组或内置函数替代 如果必须使用多层循环,可以调用外部C或FORTRAN替代,文件读写,文件格式简介 二进制文件 ASCII文

11、本文件 netCDF/HDF自描述文件,文件格式简介,二进制文件 .dat、 .bin ASCII文本文件 .txt、 .csv; NetCDF(r、w、c) .nc、.cdf、.netcdf GRIB1和GRIB2(r) .gr、.gr1、.grb、.grib、.grb1、.grib1、.gr2、grb2、.grib2 HDF(r、w、c),只支持Scientific Data Set .hdf、.hd HDFEOS(r) .hdfeos、he2、he4 Shapefile(r) .shp,二进制文件,获取无格式顺序数据数量fbinnumrec 读取无格式顺序文件fbinrecread、fb

12、inread 读取直接存取文件fbindirread 写无格式顺序文件fbinrecwrite、fbinwrite 写直接存取文件fbindirwrite craybinnumrec、craybinrecread、cbinread、cbinwrite,二进制文件NCL vs. FORTRAN,eg:110的整型数据存放在无格式直接存储文件中,data = fbindirread(“demo.bin”, -1, (/10/), “integer“),INTEGER*10 : i OPEN(31,file=“demo.bin“,access=“sequential“,form=“unformatt

13、ed“) READ(31) i CLOSE(31),function fbindirread(path1:string,文件路径rec_num1:integer,起始记录号rec_dims*:integer,数组维度rec_type1:string数据类型 ) return_valrec_dims:rec_type,二进制文件GrADSNCL,Grads控制文件365天日降水量 DSET demo.bin UNDEF -999.0 TITLE GPCP 1 Degree Daily (1DD) Precip Analysis (Version 1) OPTIONS little_endian

14、XDEF 360 LINEAR 0.5 1.0 YDEF 180 LINEAR -89.5 1.0 ZDEF 01 LEVELS 1 2 TDEF 365 LINEAR 1JAN1999 1dy VARS 1 rain 1 99 ch01 GPCP 1DD Precip (mm/day) ENDVARS,二进制文件GrADSNCL,NCL代码 nlat=180 nlon=360 ntim=365 setfileoption(“bin“,“ReadByteOrder“,“LittleEndian“) x=fbindirread(“demo.bin“,0,(/ntim,nlat,nlon/),“f

15、loat“) x!0=“time“ x!1=“lat“ x!2=“lon“ x&time=time x&lat=latGlobeFo(nlat,“lat“,“latitude“,“degrees_north“) x&lon=lonGlobeFo(nlon,“lon“,“longitude“,“degrees_east“) xlong_name=“GPCP 1DD Precip“ xunits=“mm/day“,procedure setfileoption(format_or_file1:string or file,文件格式或文件句柄option1:string,属性名value属性值 ),

16、ASCII文本文件,读ASCII文件asciiread以及readAsciiHeader和readAsciiTable 写asciiwrite和write_matrix,ASCII文本文件简单数据表,load “$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl“ beginfiASC = “demo.txt“nrow = numAsciiRow(fiASC)ncol = numAsciiCol(fiASC)data = asciiread(fiASC, (/nrow, ncol/), “integer“) end,ASCII文本文件带表头的数据表,ncols=9 nhead=2 ksoi=readAsciiTable(“demo.txt“,ncols,“float“,nhead) yrs=ksoi(:,0) data=ksoi(:,1:) data_FillValue=-999.9 ksoi=readAsciiTable(“ascii.in“,ncols,“float“,“Year“),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 励志书籍/材料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号