[c++][netcdf]通过c\c++读取字段的scale_factor与add_offset

函数:c++

cpp 复制代码
void readScaleAndOffset(const char* FileName,const char* VarName)
{
    NcFile dataFile(FileName, NcFile::read);
    NcVar Varf = dataFile.getVar(VarName);
    //查看维度
    cout << "XSizef" << Varf.getDim(0).getSize() << endl;
    cout << "YSizef" << Varf.getDim(1).getSize() << endl;
    cout << "ZSizef" << Varf.getDim(2).getSize() << endl;
    cout << "WSizef" << Varf.getDim(3).getSize() << endl;

    //查看压缩值
    NcVarAtt AttT = Varf.getAtt("scale_factor");
    NcType TypeT = AttT.getType();
    int TypeId = TypeT.getId();  //float,长度是1
    float fScale = 0.0f;
    AttT.getValues(&fScale);
    AttT = Varf.getAtt("add_offset");
    float fOffset = 0.0f;
    AttT.getValues(&fOffset);
    cout << "scale_factor" << fScale << endl;
    cout << "add_offset" << fOffset << endl;
}

结果:

cpp 复制代码
XSizef1
YSizef30
ZSizef501
WSizef751
scale_factor0.00189809
add_offset-7.62598

读取数据:

cpp 复制代码
vector<size_t> vectorS;
    vectorS.push_back(0);//time 
    vectorS.push_back(0);//level
    vectorS.push_back(0);//latitude
    vectorS.push_back(0);//longtitude

    float buf[1];
    Varf.getVar(vectorS, buf);

    cout << "buf[0]" << buf[0] << endl;//raw
    buf[0] *= fScale;
    buf[0] += fOffset;
    cout << "buf[0]" << buf[0] << endl;//real
相关推荐
belldeep2 小时前
如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?
c语言·开发语言
LuckyTHP2 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
a东方青3 小时前
蓝桥杯 2024 C++国 B最小字符串
c++·职场和发展·蓝桥杯
XiaoyaoCarter5 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
Blossom.1185 小时前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
da-peng-song5 小时前
ArcGIS Desktop使用入门(二)常用工具条——数据框工具(旋转视图)
开发语言·javascript·arcgis
galaxy_strive5 小时前
qtc++ qdebug日志生成
开发语言·c++·qt
TNTLWT5 小时前
Qt功能区:简介与安装
开发语言·qt
Darkwanderor5 小时前
c++STL-list的模拟实现
c++·list
Humbunklung6 小时前
Visual Studio 2022 中添加“高级保存选项”及解决编码问题
前端·c++·webview·visual studio