序号 | 名称 | | 功能说明 | | 语法 & 举例 |
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=http://www.mamicode.com/attvalue IDL> attvalue 17134 17394 IDL> HDF_SD_ATTRINFO, varid, attindex, COUNT=count , DATA=http://www.mamicode.com/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=http://www.mamicode.com/structure] [, COORDSYS=string] [, FILL=value] [, FORMAT=string] [, LABEL=string] [, RANGE=[max, min]] [, UNIT=string]
| |
|
| | | | | |