第二章-NCL变量及基本语法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建数组 (/…/) – a_integer – a_float – a_double – a_string – a_logical – a_2darray
= (/1, 2, 3/) ; ispan(1,3,1) = (/2.0, 5 , 8.0/) ; fspan(2,8,3) = (/12 , 2d0 , 3.2 /) ; (/12,2 ,3.2 /)*1d0 = (/"abcd", "e", "Hello, World”/) = (/True, False, True/) = (/ (/1,2,3/), (/4,5,6/), (/7,8,9/) /)
经典的 netCDF 变量模式 NCL 可查询/修改/使 用/添加 数据的任何方面
netCDF [NCL] 变量形式
X
标量或 数组
f = addfile(“foo.nc”,”r”) x = f->X
; grb/hdf
属性
long_name _FillValue units add_offset scale_factor etc.
详细查看netCDF变量 (NCL)
ncl <return> ncl 0 > f = addfile (“UV300.nc”, “r”) ncl 1 > u = f->U ncl 2 > printVarSummary (u)
; 交互模式
; 打开文档 (nc, grb, hdf, hdfeos) ; 提取 STRUCTURE ; 查看变量
NCL 使得GRIB, HDF, HDF-EOS 看上去 像netCDF 。
2.1 netCDF规则
Convention:关于文件内容一系列需遵循的规则
– –
使数据比较更加容易 使数据查看更加容易 (比如 ncview)
COARDS (1995; 已不用)
– –
Cooperative Ocean/Atmosphere Research Data Service http://ferret.wrc.noaa.gov/noaa_coop/coop_cdf_profile.html
ቤተ መጻሕፍቲ ባይዱ
NetCDF [NCL] 变量形式 p = f->SLP NCL 读取 • data values (标量或者数组)
• 属性@ • 坐标变量 &
accessed via @
p
attributes
_FillValue long_name missing_value units etc.
accessed via &
http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual /NclDataTypes.shtml#BasicNumericTypes
values
scalar or array
coords
time latitude longitude etc
以作为一个单独的数据对象.
2.2 NCL 语法
= - 赋值 • := - 重新赋值 (v6.1.2) • ; - 注释 [可在任何地方出现 ,“;” 右边文字将被忽略] • -> - 通过addfile(s)函数输入/输出变量 • @ - 读取/创建属性 • ! - 读取/创建named dimension • & -读取/创建坐标变量 • {…} – 坐标截取 • $...$ - 当使用addfile(s)输入/输出变量时,包住字符 • (/../) – 构建数组并移除 meta data • [/../] – 构建list; • [:] - list中的所有分量 • : - 数组语法 • | - 用于隔离named dimensions • \ - 连续符 [statement to span multiple lines] • :: - 外部共享对象的语法(比如 fortran/C)
坐标
coord var
time lev lat lon etc.
标量或 数组
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" f = addfile(“erai_1989-2009.mon.msl_psl.nc”,“r”) ; 打开文档[hdf,grib] p = f->SLP ; (time,lat,lon) ; ( 252,121,240)
NCL/netCDF变量
• •
array [长度可以为1(标量)] (可能) 有附加的信息
4.35 4.36 9.73 17 -0.63 -4.29 4.39 4.66 -5.84 3.68 -4.12 0.07 0.27 3.77 0.89 5.08 -2.51 5.85 -3.35 -1.66 8.46 0.14 1.76 0.87 -6.90 4.06 10.39 -5.63 -1.43 8.65
NCL/netCDF变量
double T(time, lat, lon) T: long_name = “Temperature” T: units = “degC" T: _FillValue = 1.e+20f variable type – double (float, int, short,..) variable name – T named dimensions – time, lat, lon attributes – long_name, units, _FillValue float prr(time, y, x) prr:_FillValue = -9999.f ; prr:missing_value = -9999.f ; prr:long_name = "Liquid Precipitation" ; prr:grid_mapping = "Lambert_Conformal" ; prr:units = "kg m-2 s-1" ; prr:height = "surface" ; prr:coordinates = "lon lat" ; CF COARDS CF, COARDS CF, COARDS CF
•
数据类型
numeric (classic netCDF3) • double (64 bit) • float (32 bit) • long (64 bit; signed +/-) • integer (32 bit; signed +/-) • short (16 bit; signed +/-) • byte ( 8 bit, signed +/-) • complex NOT supported enumeric (netCDF4; HDF5) • int64 (64 bit; signed +/-) • uint64 (64 bit; unsigned ) • uint (32 bit; unsigned ) • ulong (32 bit; unsigned ) • ushort (16 bit; unsigned ) • ubyte ( 8 bit, unsigned) non-numeric • string • character • graphic • file • logical • list
第一章 前言及简介 第二章 NCL变量及基本语法 2.1 netCDF规则 2.2 NCL语法 2.3 list 变量 2.4 if 语句及do循环 2.5 显示结果及调试 第三章 数据处理 第四章 文件输入输出 第五章 绘图
除首字符必须为字母外,字母和数字均可, 下划线“_”也可。
• • •
NCL 变量形式是基于netCDF 变量形式。
CF (2005/2006; 仍在使用和改进中)
– –
Climate and Forecast Metadata Convention (1.0 -> 1.6) 兼容并扩展了COARDS convention
netCDF文件的一部分
ncdump –h foo.nc (or ncl_filedump foo.nc)
snumeric [numeric , enumeric]
创建变量的简单方法
a_int =1 a_float = 2.0 a_double = 3.2d a_string = "a” a_logical = True [False]
•
; 0.00002 , 2e-5 ; 0.0032d , 3.2d-3 ; 注意大写的T/F
x
name: type: shape: size: values:
x float [real] 2-dimensions 6 (rows) x 5 (columns) x(2,3) = 8.46 [row major, 0-based indexing]
long_name: “Temperature” Meta data units: “degC” named dimensions: x(time,lat) lat: (/ -60, -30 ,0, 30, 60 /) time: (/2000, 2001, 2002, 2003, 2004, 2005/)
图形库
printVarSummary(p) ; netCDF 变量形式 wks = gsn_open_wks(“x11”,“parvis_1”) ; 打开一个 PS 文件 plot = gsn_csm_contour_map(wks,p(0,:,:),False) ; 默认绘图方式 ; 属性, 坐标标量将会被使用
练习: ncl_filedump FOO.nc | less ncl_filedump FOO.grb | less
变量: 名称, 类型, 属性, 坐标变量 variables: float lat(lat) lat:long_name = "latitude" lat:units = "degrees_north" float lon(lon) lon:long_name = "longitude" lon:units = "degrees_east" double time(time) time:long_name = "time" time:units = ”hours_since …" float T(time, lat, lon) T:long_name = “Temperature” T:units = “degC" T:missing_value = 1.e+20f T:_FillValue = 1.e+20f
DIMENSION SIZES & NAMES dimensions: lat = 64 lon = 128 time = 12
time=UNLIMITED (比如12个月)
文件属性 全域属性: title = “Temp: 1999” source = “NCAR” Conventions = ”CF-1.0”
Variable: u Type: float Total Size: 65536 bytes 16384 values Number of Dimensions: 3 Dimensions and Sizes: [time|2] x [lat | 64] x [lon | 128] Coordinates: time: [ 1 .. 7 ] lat: [ -87.8638 .. 87.8638 ] lon: [ 0 .. 357.185] Number of Attributes: 5 _FillValue : 1e36 [CF ] units : m/s [COARDS, CF] long_name : Zonal Wind [COARDS, CF] short_name : U missing_value : 1e36 [COARDS; CF-1.6 ]
NCL 读取标量/数组, 属性, 和坐标变 量以作为一个object (structure) X
通过 @读取 通 过 &读 取
values
time lev lat lon etc.
attributes
long_name _FillValue units add_offset scale_factor etc.