C++接口使用说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
template <class Type> void put_var_mapped(int varid, int start[], int count[], int stride[], int imap[], Type *block);
给文件中 ID 号为 varid 的 var 变量部分写入值……
三、NetCDF C++使用举例
………………………………… 10
1
NetCDF C++接口使用说明
一、 NetCDF 文件介绍
NetCDF(network Common Data Format)最早是由美国国家科学委员会资助的计划--Unidata --所发展
来的,其用意是在 Unidata 计划中不同的应用項目下,提供一种可以通用的资料存取方式,资料的形状包 括单点的观测值、时间序列、规则排列的网格、以及人造卫星或雷达的影像文件。
int getncid()
获得文件 id 号
3
NetCDF C++接口使用说明
//***************** function about dimension
int num_dims();
返回文件所含 dim 数目
******************************
int unlimdimid();
按 cmode 方式创建 NetCDF 格式文件,参数说明见上
void open(const char* path, OpenMode omode = ReadOnly);
按 omode 方打开 NetCDF 格式文件,参数说明见上
void close();
关闭 NetCDF 文件,此 NcFile 对象还可以用 open 或 create 来指向其它 NetCDF 文件
NetCDF 可简单的视为一种存取介面,任何使用 NetCDF 存取格式的资料就可成为 NetCDF 文件;每 一个 NetCDF 文件可以含括多维度的、具有名称的变量,包括长短的整数、单倍与双倍精度的实数、字符 等,且每一个变量都有其自我介绍的资料,包括量度的单位、名字及意义等文字说明,在此摘要性的档头 之后,才是真正的资料本身。
类型,其类型由函数自动解析。
template <class Type> void put_var_array(int varid, int start[], int count[], Type *block);
给文件中 ID 号为 varid 的 var 变量部分写入值 varid: 欲写入值的变量的 ID 号 start: 欲写入值的其始位置索引,格式同 put_var_single 函数中的 index 参数
2
NetCDF C++接口使用说明
二、NetCDF C++类函数详解
1. 类结构
对NetCDF文件,定义了NcFile类。对netCDF文件中的基本元素:维数(dimension)、变量(variable)、 属性(attriburte),分别定义了类NcDim, NcVar, NcAtt类。对于用户,所有操作都以相关类的成员函 数形式给出。用户可以在无须知道类实现细节的条件下方便地调用, 以下列出所有可供用户调用的公有成 员函数
返回 unlimited dimension 的 ID
void def_dim(NcDim &dim);
将参数 dim 定义到文件中
NcDim inq_dim(int dimid);
返回文件中 ID 号为 dimid 的 dim 维数
NcDim inq_dim(const string dimname);
(注:部分辅助类以及NcFile,NcVar,NcAtt类的部分辅助函数由于用户无需使用,故未予列出。)
2. NcFile 类公有成员函数 (所有出错处理都内嵌在函数中,用户无须考虑)
NcFile();
构造函数,创建一个 NcFile 类对象,不指定文件信息。
NcFile(const char* path, CreateMode cmode = OverWrite);
构造函数,创建 NcFile 类对象并按 cmode 方式创建 NetCDF 格式文件。
path:文件路径
cmode: 创建模式,其取值来自枚举变量 CreateMode
enum CreateMode
{
OverWrite = NC_CLOBBER,
//若欲创建文件已存在,覆盖已存在文件,为缺省值
NoOverWrite = NC_NOCLOBBER, //若欲创建文件已存在,创建不成功
返回文件中名字为 dimname 的 dim 维数
void rename_dim(int dimid, string name);
将文件中 ID 号为 dimid 的维数重命名为 name
//***************** function about variable
int num_vars();
template <class Type> void put_var_entire(int varid, Type block[]);
给文件中 ID 号为 varid 的 var 变量整体写入值 varid: 欲写入值的变量的 ID 号 block: 存储将要写入值的数组地址,该数组大小应不小于变量实际元素个数。block 为摸板参数
构造函数,创建 NcFile 类并按指定方式打开 NetCDF 格式文件。
path: 文件路径
omode: 打开模式,其取值来自枚举变量 OpenMode
enum OpenMode
{
ReadOnly = NC_NOWRITE, //打开一个已存在的文件,只读, 为缺省值
ReadWrite = NC_WRITE,
CreateShare = NC_SHARE
//设置并发操作权限,可与前面两种方式组合使用,
// CreateShare | OverWrite 或 CreateShaare | NoOverWrite
};
若不指定 cmode 值,则按缺省 OverWrite 处理
NcFile(const char* path, OpenMode omode = ReadOnly);
template <class Type> void read_var_single(int varid, int index[], Type &value);
从文件中 ID 号为 varid 的 var 变量读出一个值 varid: 欲读出值的变量的 ID 号 index: 欲写入值在变量中位置的索引,用数组存储,如对于一个 3 维变量,对其任一元素写值,
给文件中 ID 号为 varid 的 var 变量写入一个值 varid: 欲写入值的变量的 ID 号 index: 欲写入值在变量中位置的索引,用数组存储,如对于一个 3 维变量,对其任一元素写值,
index 为一含 3 个元素的数组(0,0,0)到(2,2,2); value: 将要写入的值,为摸板参数类型,其类型由函数自动解析。
4
NetCDF C++接口使用说明
count: 对每一维写入的值个数,如(2,3,4,……)表示对第一维写入 2 个值,第二维写入 3 个值,第三维写入 4 个值。
block: 存储将要写入值的数组地址,该数组大小应不小于要写入的元素个数,为摸板参数,类型 由函数自动解析。
template <class Type> void put_var_subsampled(int varid, int start[], int count[], int stride[], Type *block);
返回文件中名字为 varname 的 var 变量
void rename_var(int varid, string name);
将文件中 ID 号为 varid 的变量重命名为 name
template <class Type>
void put_var_single(int varid, int index[], Type value);
返回文件所含 var 数目
******************************
void def_var(NcVar &var);
将参数 var 定义到文件中
NcVar inq_var(int varid);
返回文件中 ID 号为 varid 的 var 变量
NcVar inq_var(const string varname);
//打开一个已存在的文件,只读, 可同时读和写
OpenShare = NC_SHARE
//设置并发操作权限,可与前面两种方式组合使用
// OpenShare | ReadOnly 或 OpenShare | ReadWrite
};
若不指定omode值,则按缺省ReadOnly处理
void create(const char* path, CreateMode cmode = Overwrite);
index 为一含 3 个元素的数组(0,0,0)到(2,2,2); value: 存储读出的值,为摸板参数类型,其类型由函数自动解析。
template <class Type> void read_var_entire(int varid, Type *block);
从文件中 ID 号为 varid 的 var 变量整体读出值 varid: 欲读出值的变量的 ID 号 block: 存储读出值的数组地址,该数组大小应不小于变量实际元素个数。block 为摸板参数类型, 其类型由函数自动解析。
NetCDF C++接口使用说明
作者:杜鸿飞 完成时间:2004 年 4 月
目录
NetCDF C++接口使用说明
一、NetCDF 文件介绍
……………………………… 2
二、NetCDF C++类函数详解
…………………………… 3
1. NcFile 类 公有成员函数
……………………… 3
文件操作
……………………………………… 3
template <class Type> void read_var_array(int varid, int start[], int count[], Type *block);
NetCDF 适合于科技方面的使用,这是因为这个介面是一个多维的资料分布系统,所以由这个介面所产 生的文件,具有多维的资料格式,当你需要其中的某一笔资料時,程序将不会从第一笔资料顺序读到你所 需要的资料处,而是由 NetCDF 程序直接存取那一笔资料!如此一来将会大量的降低存取的时间。
简单的说, NetCDF 是一套软件,也是一种存取介面,这种介面的优点在于『其资料具有说明的档头』, 所以资料不会被误用;而其存取方式为『直接至该笔资料存取』,因此可以省去很多不必要的读取时间; 另外,这种文件是一种可以『跨平台操作』读取的格式,因此,不论你是以何种操作系统制作 NetCDF 文 件,在其他平台之下,还是可以使用这样的资料文件的。
本手册作者在原 NetCDF 文件系统存取接口的基础上利用 C++语言进行了二次封装。新的存取接口采取 面向对象的方法给用户提供了更加简单、友好的使用界面。用户只须清楚 NetCDF 文件中的维数(dimension) 变量(varialbe),属性(attribute)的概念即可利用作者提供的二次接口进行相应编程,轻松完成 NetCDF 文件的读写工作。(对 NetCDF 文件格式的了解请参考相关资料)
给文件中 ID 号为 varid 的 var 变量部分写入值,对每一维隔指定个数写入值 varid: 欲写入值的变量的 ID 号 start: 欲写入值的其始位置索引,格式同 put_var_single 函数中的 index 参数 count: 对每一维写入的值个数,如(2,3,4,……)表示对第一维写入 2 个值,第二维写入 3 个值,第三维写入 4 个值……。 stride: 对第 k 维每隔 k 个元素写值 block: 存储将要写入值的数组地址,该数组大小应不小于要写入的元素个数,为摸板参数,类型 由函数自动解析。
维数操作
………………………………………… 4
变百度文库操作
………………………………………… 4
属性操作
……………………………………… 6
2. NcDim 类 公有成员函数
………………………… 7
3. NcVar 类 公有成员函数
…………………………… 7
4. NcAtt 类 公有成员函数
……………………………… 9
相关文档
最新文档