【224】?? IDL NetCDF 文件操作说明

参考:


01   HDF_SD_START 打开一个 SDS 模式的 HDF 文件。
02   HDF_SD_END 关闭一个 SDS 模式的 HDF 文件。
03   HDF_SD_NAMETOINDEX 返回变量索引。
04   HDF_SD_SELECT 返回变量标识符。
05   HDF_SD_GETDATA 读取变量数据。
06   HDF_SD_ENDACCESS 结束到一个变量的通道。
07   HDF_SD_ATTRFIND 返回属性索引。
08   HDF_SD_ATTRINFO 读取属性数据。
09   HDF_SD_FILEINFO 返回文件信息。
10   HDF_SD_GETINFO 返回变量信息。
11   HDF_SD_CREATE 创建一个变量。
12   HDF_SD_DIMGETID 创建一个维度。
13   HDF_SD_DIMSET 设置维度信息。
14   HDF_SD_ADDDATA 写入变量数据。
15   HDF_SD_ATTRSET 写入属性数据。


  NetCDF(network Common Data Form)由位于科罗拉多州波尔市的 Unidata 程序中心开发,主要应用于大气科学的研究。NetCDF 的数据模式具有简单性和灵活性的特点。NetCDF 文件的基本组成为变量、属性和维数:

  • 变量为标量或多维数组。NetCDF 所支持的 IDL 数据类型有 string、byte、int、long、float 和 double
  • 属性包含一个变量或这个文件的附加性质。包含变量信息(如单位、有效范围、尺度因子等)的属性称作变量属性;包含文件信息的属性称作全局属性。属性可以是标量或一维数组,支持的数据类型为 string、byte、int、long、float 和 double
  • 维数为长整形标量,记录了一个或多个变量的大小

参考:NetCDF 格式文件入门参考:NetCDF 入门

从数学上来说,NetCDF 存储的数据就是一个多自变量的单值函数。 用公式来说就是 f(x,y,z,...) = value,函数的自变量 x,y,z 等在 NetCDF 中叫做 (dimension) 或坐标轴 (axis),函数值 value 在 NetCDF 中叫做变量 (Variables)。而自变量和函数值在物理学上的一些性质,比如计量单位 (量纲)、物理学名称等等在 NetCDF 中就叫属性 (Attributes)。

注意:IDL读取数据与在其他软件上显示的数据位置相反,左上对右下!

注意:NetCDF记录数据与实际数据是通过一个数量关系获取的,如下图所示:

    
   实际结果 = 显示结果 × scale_factor + add_offset   
 



数据:可以从 http://www.gumley.com 中下载这些例子的数据文件:

  • image.nc
  • sao.nc

常用的 NetCDF 程序

名     称 功     能 名     称 功     能
NCDF_OPEN() 打开一个 NetCDF 文件 NCDF_ATTNAME() 返回一个属性名称
NCDF_CLOSE 关闭一个 NetCDF 文件 NCDF_CREATE() 创建一个 NetCDF 文件
NCDF_VARID() 返回一个变量标识符 NCDF_DIMDEF() 创建一个维度
NCDF_VARGET 读取一个变量 NCDF_VARDEF() 创建一个变量
NCDF_ATTGET 读取一个属性 NCDF_ATTPUT 写入属性数据
NCDF_INQUIRE() 返回文件信息 NCDF_CONTROL 开始或结束定义模式
NCDF_VARINQ() 返回变量信息 NCDF_VARPUT 写入变量数据

常用的标准 NetCDF 文件属性

属性名称 定      义
long_name 详细描述变量的字符串(如“Northwards velocity component”)
units 描述变量单位的字符串(如“meters/second”)
valid_range 一个两元素的数组,包含变量有效的最小和最大值(如 [0.0, 5.0]),
该属性的类型必须和变量类型一致
scale_factor 变量读取以后作用于变量的一个乘数(允许 float 值存在 short 或 byte 类型),
该属性的类型必须和需要的变量类型一致(如浮点型)
add_offset 变量读取完毕,并且 scale_factor 使用后,加入到变量的一个偏值,
该属性的类型必须和需要的变量类型一致(如浮点型)
FillValue 表示没有数据写入的一个值,该属性的类型必须和变量的类型一致

序号 名称  
功能说明

  语法 & 举例
01 NCDF_OPEN  
打开一个 NetCDF 文件,返回值是这个文件的 NetCDF ID 值。
-----------------------------------------------
Result = NCDF_OPEN( Filename [, /NOWRITE | , /WRITE] )
-----------------------------------------------
? Filename:欲打开或创建的文件路径
? READ:只读模式,默认模式
? RDWR:读写模式
? CREATE:创建一个新的 SD 文件

 
;打开一个新的 HDF 文件
SDinterface_id = HDF_SD_START(‘test.hdf‘, /CREATE)
;当结束文件的时候需要调用 HDF_SD_END
HDF_SD_END, SDinterface_id
--------------------------------------------------
IDL> file = ‘D:\McDelfino\dell-dev\IDL\A.L2_LAC‘
IDL> hdfid = HDF_SD_START(file, /RDWR)
IDL> hdfid
      393216

 02 NCDF_CLOSE
关闭一个 NetCDF 文件。
-----------------------------------------------
NCDF_CLOSE, Cdfid
-----------------------------------------------
? SDinterface_id:由 HDF_SD_START 返回的 SD ID 值

 
SDinterface_id = HDF_SD_START(‘test.hdf‘, /CREATE)
;使用多种命令读取 HDF 文件中的 SD 数据,当完成数据集操作,要调用 HDF_SD_ENDACCESS 来结束数据集操作
HDF_SD_ENDACCESS, SDdataset_id_1
;当完成文件的操作,要调用 HDF_SD_END 来结束文件操作
HDF_SD_END, SDinterface_id
--------------------------------------------------
IDL> file = ‘D:\McDelfino\dell-dev\IDL\A.L2_LAC‘
IDL> hdfid = HDF_SD_START(file, /RDWR)
IDL> ;处理过程
IDL> HDF_SD_END, hdfid

 03 NCDF_VARID  
返回一个变量标识符,变量 ID,如果返回值为 -1 说明变量不存在。
-----------------------------------------------
Result = NCDF_VARID(Cdfid, Name)
-----------------------------------------------
? SDinterface_id:由 HDF_SD_START 返回的 SD ID 值
? SDS_Name:指定 SD 数据集中某个字符串名称

  
SDinterface_id = HDF_SD_START(‘demo.hdf‘)
;返回 variable_2 数据集的索引值
index = HDF_SD_NAMETOINDEX(SDinterface_id, ‘variable_2‘)
;访问数据集
SDdataset_id=HDF_SD_SELECT(SDinterface_id,index)
;结束访问
HDF_SD_ENDACCESS, SDdataset_id
HDF_SD_END, SDinterface_id
--------------------------------------------------
IDL> file = ‘D:\McDelfino\dell-dev\IDL\A.L2_LAC‘
IDL> hdfid = HDF_SD_START(file, /RDWR)
IDL> ;读取数据中的lat数据
IDL> ;通过latitude来获取相应的索引值
IDL> index = HDF_SD_NAMETOINDEX(hdfid, ‘latitude‘)
IDL> ;通过索引值获取ID值
IDL> varid = HDF_SD_SELECT(hdfid, index)
IDL> ;通过ID值获取数组值
IDL> HDF_SD_GETDATA, varid, latdata
IDL> HELP, latdata
LATDATA         DOUBLE    = Array[1354, 2040]

 04 NCDF_VARGET  
读取一个变量。
-----------------------------------------------
NCDF_VARGET, Cdfid, Varid, Value [, COUNT=vector] [, OFFSET=vector] [, STRIDE=vector]
-----------------------------------------------
? Cdfid 是 NCDF_OPEN 函数获取的返回值;
? Varid 是 NCDF_VARID 函数获取的返回值;
? Value 是读取变量的结果;
? COUNT 是每维中读取元素的数目(默认情况是从当前 offset 的位置到每维的最后一个元素);
? OFFSET 是每维中读取的第一个元素(从零开始,默认为 [0, 0, ... ,0];
? STRIDE 是在每维中提取的间隔(默认为 [1, 1, ... , 1],意味着每个元素均被选中)。
-----------------------------------------------
注意:如果 offset、count 或 stride 导致变量超出了范围,则 IDL 在读取时将舍去超出的部分,并给出错误信息。

 05 NCDF_ATTGET  
读取一个属性。
-----------------------------------------------
NCDF_ATTGET, Cdfid [, Varid] , Name, Value [, /GLOBAL]
-----------------------------------------------
? Name 是包含属性名称的字符串;
? Value 获取变量结果。

 
IDL> ;在下面的例子中,从 0 列、100 行开始读取 100×1 的变量子集,读取时在列的维度上元素一个隔一个地读取(左右)
IDL> hdfid = HDF_SD_START(‘EarthProbe5_31_99.hdf‘)
IDL> index = HDF_SD_NAMETOINDEX(hdfid, ‘TOTAL_OZONE‘)
IDL> varid = HDF_SD_SELECT(hdfid, index)
IDL> HDF_SD_GETDATA, varid, data, START=[0, 100], COUNT=[100, 1], STRIDE=[2, 1]
IDL> HELP, data
DATA            INT       = Array[100]
IDL> data[0:3]
     257       0       0     258
IDL> HDF_SD_ENDACCESS, varid
IDL> HDF_SD_END, hdfid
IDL> TVSCL, data

 06 NCDF_INQUIRE  
返回文件信息。
返回值是一个结构体,{ NDIMS:0L, NVARS:0L, NGATTS:0L, RECDIM:0L }
? Ndims 这个 NetCDF 文件定义维度的数目;
? Nvars 这个 NetCDF 文件定义变量的数目;
? Ngatts 这个 NetCDF 文件定义全局属性的数目;
? RecDim The ID of the unlimited dimension, if there is one, for this NetCDF file. If there is no unlimited dimension, RecDim is set to -1.
-----------------------------------------------
Result = NCDF_INQUIRE(Cdfid)
-----------------------------------------------
? SDinterface_id:HDF_SD_SELECT、HDF_SD_CREATE  返回的 SD ID 值(varid)

 
IDL> ;访问变量数据后,需要结束
IDL> hdfid = HDF_SD_START(‘EarthProbe5_31_99.hdf‘)
IDL> index = HDF_SD_NAMETOINDEX(hdfid, ‘OZONE‘)
IDL> varid = HDF_SD_SELECT(hdfid, index)
IDL> ;处理过程
IDL> HDF_SD_ENDACCESS, varid
IDL> HDF_SD_END, hdfid

 07 NCDF_VARINQ  
返回变量信息。
返回值是一个结构体,{ NAME:"", DATATYPE:"", NDIMS:0L, NATTS:0L, DIM:LONARR(NDIMS) }
? Name 变量的名称;
? DataType 变量数据类型,‘BYTE‘, ‘CHAR‘, ‘INT‘, ‘LONG‘, ‘FLOAT‘, or ‘DOUBLE‘;
? Ndims 维度的数目;
? Natts 给这个变量分配属性的数目;
? Dim A vector of the dimension IDs for the variable dimensions.
-----------------------------------------------
Result = NCDF_VARINQ(Cdfid, Varid)
-----------------------------------------------
? SD_id:由 HDF_SD_START、HDF_SD_SELECT、HDF_SD_CREATE 得到的 SD ID 值,可以是 hdfid 或者 varid
? Name:属性的名称。

  
IDL> ;读取属性数据
IDL> hdfid = HDF_SD_START(‘Manassas.hdf‘)
IDL> index = HDF_SD_NAMETOINDEX(hdfid, ‘CEL0: ELEVATION‘)
IDL> varid = HDF_SD_SELECT(hdfid, index)
IDL> attindex = HDF_SD_ATTRFIND(varid, ‘valid_range‘)
IDL> HDF_SD_ATTRINFO, varid, attindex, data=attvalue
IDL> attvalue
   17134   17394
IDL> HDF_SD_ATTRINFO, varid, attindex, COUNT=count , DATA=data, HDF_TYPE=HDF_type , NAME=name , TYPE=type
IDL> count
           2
IDL> data
   17134   17394
IDL> hdf_type
DFNT_INT16
IDL> name
valid_range
IDL> type
INT

 08 NCDF_ATTNAME  
返回一个属性名称。
返回属性名称,如果没有,就返回空。
-----------------------------------------------
Result = NCDF_ATTNAME( Cdfid [, Varid] , Attnum [, /GLOBAL])
-----------------------------------------------
? SD_id:由 HDF_SD_START、HDF_SD_SELECT、HDF_SD_CREATE 得到的 SD ID 值,可以是 hdfid 或者 varid
? Attr_Index:索引值
? COUNT=variable:返回属性所包含的值的数量
? DATA=variable:返回属性数据
? HDF_TYPE=variable:返回属性的 HDF type
? NAME=variable:返回属性的名称
? TYPE=variable:返回数据的类型

09 NCDF_CREATE  
创建一个 NetCDF 文件。
创建成功的话就会返回 NetCDF ID 值。文件自动转入定义模式(define mode),意味着新的变量、属性和维度可以加入文件中。
-----------------------------------------------
Result = NCDF_CREATE( Filename [, /CLOBBER | /NOCLOBBER] [, /NETCDF3_64BIT] [, /NETCDF4_FORMAT] )
-----------------------------------------------
? CLOBBER 设置此关键字,并且文件存在,那么在创建新的版本之前直接擦除文件内容;
? NOCLOBBER 设置此关键字,只有不存在此文件的情况下才能创建成功,否则报错。

  
IDL> ;获取变量信息
IDL> hdfid = HDF_SD_START(‘Manassas.hdf‘)
IDL> HDF_SD_FILEINFO, hdfid, nvars, ngatts
IDL> nvars
           1
IDL> ngatts
           6
IDL> hdfid = HDF_SD_START(‘EarthProbe5_31_99.hdf‘)
IDL> HDF_SD_FILEINFO, hdfid, nvars, ngatts
IDL> nvars
           4
IDL> ngatts
           0
IDL> varid = HDF_SD_SELECT(hdfid, 0)
IDL> HDF_SD_GETINFO, varid, NAME=name, NDIMS=ndims, TYPE=type, DIMS=dims
IDL> name
TOTAL_OZONE
IDL> ndims
           2
IDL> type
INT
IDL> dims
         288         180
IDL> HDF_SD_GETINFO, varid, NAME=name, NDIMS=ndims, TYPE=type, DIMS=dims, UNIT=unit, FORMAT=format
IDL> unit
MATM_CM
IDL> format
I3

 10 NCDF_DIMDEF  
创建一个维度。
如果成功,返回维度的 ID 值。
-----------------------------------------------
Result = NCDF_DIMDEF( Cdfid, DimName, Size [, /UNLIMITED] )
-----------------------------------------------
? DimName 被定义纬度的字符串名称;
? Size 维度的大小。可以用任何数量的表达式来表达。如果使用了关键字 UNLIMITED,Size 相当于无效;
? UNLIMITED 设置此关键字可以创建一个无限大小的维度。

11 NCDF_VARDEF  
创建一个变量。
如果成功,返回变量的 ID 值。如果不能创建这个新的变量,就会返回-1。
-----------------------------------------------
Result = NCDF_VARDEF( Cdfid, Name [, Dim] [, /BYTE | , /CHAR | , /DOUBLE | , /FLOAT | , /LONG | , /SHORT] [, CHUNK_DIMENSIONS] [, /CONTIGUOUS] [, GZIP=value] [, /SHUFFLE] [, /STRING] [, /UBYTE] [, /UINT64] [, /ULONG] [, /USHORT])
-----------------------------------------------
? 如果类型关键字没有数据,默认使用 FLOAT;
? Dim 包括变量维度的 dimension IDs。如果 ID 是无限大小的,那必须放在数组的最右面。如果没有设置 Dim,变量默认为一个标量。
? Name:变量名称
? Dims:数据维度,数组
? INT:数据为整型
? FLOAT:数据为浮点型

 
;新建HDF文件,并添加变量值
;新建HDF的文件路径
file=‘D:\IDL\sst13.hdf‘
;以create的形式打开文件
hdfid=HDF_SD_START(file, /create)
;新建latitude变量,在HDF上显示1354列,2040行,默认是浮点型数组
sds_id=HDF_SD_CREATE(hdfid, ‘latitude‘, [1354, 2040], /float)
;由于从HDF中读取的数据与实际数据存在一个中心对称的关系,因此通过两个reverse实现
;latdata就是从其他HDF中读取的数组,将数组的结果添加到变量latitude中去
HDF_SD_ADDDATA, sds_id, REVERSE(REVERSE(latdata), 2)
 
sds_id=HDF_SD_CREATE(hdfid, ‘longitude‘, [1354, 2040], /float)
HDF_SD_ADDDATA, sds_id, REVERSE(REVERSE(londata), 2)
 
sds_id=HDF_SD_CREATE(hdfid, ‘sst‘, [1354, 2040], /float)
HDF_SD_ADDDATA, sds_id, REVERSE(REVERSE(sstdata1), 2)
 
HDF_SD_ENDACCESS, sds_id
HDF_SD_END, hdfid

  NCDF_ATTPUT  
写入属性数据。
-----------------------------------------------
NCDF_ATTPUT, Cdfid [, Varid] , Name , Value [, /GLOBAL] [, LENGTH=value] [, /BYTE | , /CHAR | , /DOUBLE | , /FLOAT | , /LONG | , /SHORT] [, /STRING] [, /UBYTE] [, /UINT64] [, /ULONG] [, / USHORT]
-----------------------------------------------
? GLOBAL 设置此关键字去创建全局属性。
? COUNT=vector:每维中读取元素的数目,默认是从 start 位置到每维的最后一个元素
? START=vector:每维中写入的第一个元素,默认从零开始[0, 0, ..., 0]
? STRIDE=vector:维中写入的间隔,默认为 [0, 0, ..., 0],意味着每个元素都被选

12 NCDF_CONTROL  
开始或结束定义模式。
-----------------------------------------------
NCDF_CONTROL, Cdfid [, /ABORT] [, /ENDEF] [, /FILL | , /NOFILL] [, /NOVERBOSE | , /VERBOSE] [, OLDFILL=variable] [, /REDEF] [, /SYNC]
-----------------------------------------------
? 设置此关键字可以将一个打开的 NetCDF 文件结束定义模式(define mode),进入数据模式(data mode)文件只有在数据模式下才能写入变量。

  
SDinterface_id = HDF_SD_START(‘myhdf.hdf‘, /RDWR)
;创建一个三维数组的变量
SDdataset_id = HDF_SD_CREATE(SDinterface_id, ‘var1‘, [10,20,0], /LONG)
;选择第一个维度
dim_id=HDF_SD_DIMGETID(SDdataset_id,0)
; Set the data strings and scale for the first dimension:
HDF_SD_DIMSET, dim_id, NAME=‘d1‘, LABEL=‘l1‘, FORMAT=‘f1‘, UNIT=‘u1‘, SCALE=FINDGEN(10)
HDF_SD_ENDACCESS, SDdataset_id
HDF_SD_END, SDinterface_id
; Reopen the file:
SDinterface_id = HDF_SD_START(‘myhdf.hdf‘)
; Select the first dimension:
dim_id = HDF_SD_DIMGETID(SDdataset_id,0)
; Retrieve the information:
HDF_SD_DIMGET, dim_id, NAME=d1, LABEL=l1, FORMAT=f1, UNIT=u1, SCALE=sc, COUNT=cnt, NATTR=natt, TYPE=type
; Print information about the returned variables:
HELP, d1, l1, f1, u1, sc, cnt, natt, type
; Close the SD interface:
HDF_SD_ENDACCESS,SDdataset_id
HDF_SD_END, SDinterface_id

13 NCDF_VARPUT  
写入变量数据。
-----------------------------------------------
NCDF_VARPUT, Cdfid, Varid, Value [, COUNT=vector] [, OFFSET=vector] [, STRIDE=vector]
-----------------------------------------------
? SDdataset_id:只读模式,默认模式
? Dimension_Number:

  HDF_SD_DIMGET  
返回一个 SD 数据集维度的信息。
-----------------------------------------------
HDF_SD_DIMGET,
Dim_ID [, /COUNT] [, COMPATIBILITY=variable] [, /FORMAT] [, /LABEL] [,
/NAME] [, /NATTR] [, /SCALE] [, /TYPE] [, /UNIT]
-----------------------------------------------
? Dim_ID:一个由 HDF_SD _DIMGETID 返回的维度 ID 值
? COUNT:返回维度的大小

15 HDF_SD_ATTRSET  
写入属性数据。(将某个变量的某个属性值进行修改)
-----------------------------------------------
HDF_SD_ATTRSET, SD_id, Attr_Name, Values [, Count] [, /BYTE] [, /DFNT_CHAR] [, /DFNT_FLOAT32] [, /DFNT_FLOAT64] [, /DFNT_INT8] [, /DFNT_INT16] [, /DFNT_INT32] [, /DFNT_UINT8] [, /DFNT_UINT16] [, /DFNT_UINT32] [, /DOUBLE] [, /FLOAT] [, /INT] [, /LONG] [, /SHORT] [, /STRING]
-----------------------------------------------
? SD_id:由 HDF_SD_START、HDF_SD_SELECT、HDF_SD_CREATE 得到的 SD ID 值,可以是 hdfid 或者 varid
? Attr_Name:欲写入的属性名称
? Values:欲写入的属性值

   
  HDF_SD_SETINFO  
设置变量信息。

HDF_SD_SETINFO, SDdataset_id [, CALDATA=structure] [, COORDSYS=string] [, FILL=value] [, FORMAT=string] [, LABEL=string] [, RANGE=[max, min]] [, UNIT=string]

 
       
时间: 2024-07-30 19:57:25

【224】?? IDL NetCDF 文件操作说明的相关文章

【223】?? IDL HDF 文件操作说明

---恢复内容开始--- 参考:Math - Miscellaneous Routines参考:Math - Statistical Tools Routines 01   ABS 绝对值. 02   SQRT 平方根. 03   EXP e 的指数幂. 04   ROUND 四舍五入. 05   CEIL 不小于此数的最小整数. 06   FLOOR 不大于此数的最大整数. 07   SIN 三角函数,sin 值. 08   COS 三角函数,cos 值. 09   TAN 三角函数,tan

MeteoInfoLab脚本示例:创建netCDF文件(合并文件)

在MeteoInfoLab中增加了创建netCDF文件并写入数据的功能,这里利用合并多个netCDF文件为一个新的netCDF文件为例. 1.创建一个可写入的netCDF文件对象(下面用ncfile表示),用addfile函数,第一个参数是文件名,第二次参数'c'表示创建新的netCDF文件.ncfile = addfile(outfn, 'c') 2.添加维(Dimensions),用ncfile的adddim函数,两个参数分别是维名称和维长度.stn = 26564stdim = ncfil

C中文件操作说明

r 以只读方式打开文件,该文件必须存在. r+ 以读/写方式打开文件,该文件必须存在. rb+ 以读/写方式打开一个二进制文件,只允许读/写数据. rt+ 以读/写方式打开一个文本文件,允许读和写. w 打开只写文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件. w+ 打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件. a 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容

Python提取netCDF数据并转换为csv文件

netCDF全称是network Common Data Format(网络通用数据格式),是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准.目前,NetCDF广泛应用于大气科学.水文.海洋学.环境模拟.地球物理等诸多领域. 我们使用python对数据进行分析处理,首先我们需要下载安装netCDF4包,可使用p

IDL中路径相关函数总结

[转] 系统变量 系统变量 描述 !DIR IDL安装主目录 !PATH IDL搜索库文件及路径,包含IDL自带库文件路径和用户工作空间路径. !DLM_PATH IDL搜索DLM路径 !HELP_PATH IDL帮助文件路径 获取临时路径 IDL> print, GETENV('IDL_TMPDIR') C:\Users\Administrator\AppData\Local\Temp\ 修改工作空间当前路径:CD,通过current关键字获取当前路径 IDL> cd, 'D:\temp'

Python中文件操作

一.文件打开操作 1.文件操作步骤: (1)打开文件模式: f =open("db",'a')    #文件追加 f = open("db",'r')    #只读操作(默认模式) f = open("db",'w')    #只写操作,会先清空原文件 f = open("db",'x')    #文件存在,会报错,不存在创建并只写 f = open("db",'rx|a|w')  #以二进制的方式只读或只

IDL 字符串

1.创建字符串 字符串和字符串数组通过赋值或函数方式来创建.在IDL字符串用" "或' '括起来表示. IDL> s1="abcdef" IDL> help,s1 S1 STRING = 'abcdef' IDL> s2=strarr(4) IDL> help,s2 S2 STRING = Array[4] 以"为首的字符串的首字符不能为数字,因为以"开头的数字串代表一个8进制数,如"11表示8进制的11,即10

MeteoInfo脚本示例:GrADS to netCDF

这里给出一个将GrADS数据文件转为netCDF数据文件的脚本示例程序,其它格式数据转netCDF可以参考: #----------------------------------------------------- # Author: Yaqiang Wang # Date: 2015-3-12 # Purpose: Convert CUACE grads data to netCDF (CUACE/Dust) # Note: Sample #------------------------

【189】IDL 代码从 Windows 转移到 Linux

文件夹分隔符,Windows 是“/”,Linux 是“\”,按照程序,需要修改 通过 bash 运行 *.pro 文件,貌似只能运行没有参数的,有参数的需要写入到文件中 idl 的文件不能用大写字母,还有过程或者函数名称 如果 *.pro 运行的时候出现乱码,但是查阅的时候没有,可以新建一个文件,将内容复制过去,重新进行编译,这时就不会乱码了