[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
相关推荐
小超超爱学习99378 小时前
大数乘法,超级简单模板
开发语言·c++·算法
java1234_小锋9 小时前
Java高频面试题:MyBatis如何实现动态数据源切换?
java·开发语言·mybatis
knighthood20019 小时前
Qt5.15+VTK9.3.0实现点云点选功能
开发语言·qt
墨神谕9 小时前
Java中,为什么要将.java文件编译成,class文件,而不是直接将.java编译成机器码
java·开发语言
和小潘一起学AI9 小时前
CentOS 7安装Anaconda
开发语言·python
努力努力再努力dyx10 小时前
【无标题】
开发语言·python
傻小胖10 小时前
Object.defineProperty() 完整指南
开发语言·前端·javascript
xyx-3v10 小时前
qt创建新工程
开发语言·c++·qt
小陈工10 小时前
Python Web开发入门(十六):前后端分离架构设计——从“各自为政”到“高效协同”
开发语言·前端·数据库·人工智能·python
算法鑫探10 小时前
10个数下标排序:最大值、最小值与平均值(下)
c语言·数据结构·算法·排序算法·新人首发