[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
相关推荐
水饺编程7 分钟前
第5章,[Win32 章节] :练习程序,BigFontPic
c语言·c++·windows·visual studio
dtq04241 小时前
数据结构 - 线性表 - 双向链表
c语言·数据结构·学习
不正经学生5 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技5 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
恋恋西风8 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
Brilliantwxx8 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BizzZ_8 小时前
C++(22)——类型转换和IO流
开发语言·c++
小范同学_8 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
xiaobobo33309 小时前
c语言中for循环条件中定义临时栈变量的作用域
c语言·for循环条件定义栈变量·大括号作用域·独立栈变量
geovindu9 小时前
CSharp: 万年历
开发语言·后端·c#·.net