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

代码展示了如何使用HDF5库在C++中读取文件尺寸、压缩系数和偏移值,并对数据进行预处理。
摘要由CSDN通过智能技术生成

函数:c++

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;
}

结果:

XSizef1
YSizef30
ZSizef501
WSizef751
scale_factor0.00189809
add_offset-7.62598

读取数据:

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值