在这里介绍的是用NetCDF(c++接口)读取NC文件信息,主要包括NC文件里的维度与变量,我用的VS2015+Qt+NetCDF进行读取的,至于这个环境的配置可以参考我的上一篇文章,在这里我就不介绍环境的配置了。不过你也可用VS+NetCDF进行读取,把结果展示在控制台窗口内,我用Qt的目的是为了将读取结果展示在一个表格控件内。

1.首先读取文件

QString filename = QFileDialog::getOpenFileName(this, "开打文件", ".", "*.nc");if (filename.isEmpty()){QMessageBox::information(this, "提示", "文件指针为空"); return;}NcFile dataFile(filename.toStdString(), NcFile::read);

2.读取维度

//维度操作multimap<string, NcDim> group_dim;group_dim = dataFile.getDims();multimap<string, NcDim>::iterator it_dim;it_dim = group_dim.begin();int row_dim = 0;for (; it_dim != group_dim.end(); it_dim++){       //读取维度的IDint id = it_dim->second.getId();QString txt_id = QString::number(id);tableV_dim->setItem(row_dim, 0, new QStandardItem(txt_id));//读取维度的名称string name = it_dim->second.getName();QString txt_name = QString::fromStdString(name);tableV_dim->setItem(row_dim, 1, new QStandardItem(txt_name));//读取维度的长度int size = it_dim->second.getSize();QString txt_size = QString::number(size);tableV_dim->setItem(row_dim, 2, new QStandardItem(txt_size));row_dim++;}//设置表格的Modelui.tableView_dim->setModel(tableV_dim);

上面的tableView_dim是我自定义的QStandardItemModel;

3.读取变量

//变量操作std::multimap<string, NcVar> group_var;group_var = dataFile.getVars();std::multimap<string, NcVar>::iterator it_var;it_var = group_var.begin();int row = 0;for (; it_var != group_var.end(); it_var++){  //读取变量IDint id = it_var->second.getId();QString txt_id = QString::number(id);tableV_var->setItem(row, 0, new QStandardItem(txt_id));//读取变量名称string name = it_var->second.getName();QString txt_name = QString::fromStdString(name);tableV_var->setItem(row, 1, new QStandardItem(txt_name));//读取变量类型string type = it_var->second.getType().getName();QString txt_type = QString::fromStdString(type);tableV_var->setItem(row, 2, new QStandardItem(txt_type));//读取变量所拥有的维度名称int dim = it_var->second.getDimCount();QString txt_dim = QString::number(dim);tableV_var->setItem(row, 3, new QStandardItem(txt_dim));string name_dim = "";for (int i = 0; i < it_var->second.getDimCount(); i++){NcDim dim = it_var->second.getDim(i);if (i == 0){name_dim = name_dim + dim.getName();}else{name_dim = name_dim + " , " + dim.getName();}}QString txt_name_dim = QString::fromStdString(name_dim);tableV_var->setItem(row, 4, new QStandardItem(txt_name_dim));row++;}

附上一个打开NC文件并读入一个表格内的完整函数

void NC_show::act_tool_open_triggered()
{QString filename = QFileDialog::getOpenFileName(this, "开打文件", ".", "*.nc");if (filename.isEmpty()){QMessageBox::information(this, "提示", "文件指针为空"); return;}NcFile dataFile(filename.toStdString(), NcFile::read);//维度操作multimap<string, NcDim> group_dim;group_dim = dataFile.getDims();multimap<string, NcDim>::iterator it_dim;it_dim = group_dim.begin();int row_dim = 0;for (; it_dim != group_dim.end(); it_dim++){int id = it_dim->second.getId();QString txt_id = QString::number(id);tableV_dim->setItem(row_dim, 0, new QStandardItem(txt_id));string name = it_dim->second.getName();QString txt_name = QString::fromStdString(name);tableV_dim->setItem(row_dim, 1, new QStandardItem(txt_name));int size = it_dim->second.getSize();QString txt_size = QString::number(size);tableV_dim->setItem(row_dim, 2, new QStandardItem(txt_size));row_dim++;}ui.tableView_dim->setModel(tableV_dim);//变量操作std::multimap<string, NcVar> group_var;group_var = dataFile.getVars();std::multimap<string, NcVar>::iterator it_var;it_var = group_var.begin();int row = 0;for (; it_var != group_var.end(); it_var++){  //读取变量IDint id = it_var->second.getId();QString txt_id = QString::number(id);tableV_var->setItem(row, 0, new QStandardItem(txt_id));//读取变量名称string name = it_var->second.getName();QString txt_name = QString::fromStdString(name);tableV_var->setItem(row, 1, new QStandardItem(txt_name));//读取变量类型string type = it_var->second.getType().getName();QString txt_type = QString::fromStdString(type);tableV_var->setItem(row, 2, new QStandardItem(txt_type));//读取变量所拥有的维度名称int dim = it_var->second.getDimCount();QString txt_dim = QString::number(dim);tableV_var->setItem(row, 3, new QStandardItem(txt_dim));string name_dim = "";for (int i = 0; i < it_var->second.getDimCount(); i++){NcDim dim = it_var->second.getDim(i);if (i == 0){name_dim = name_dim + dim.getName();}else{name_dim = name_dim + " , " + dim.getName();}}QString txt_name_dim = QString::fromStdString(name_dim);tableV_var->setItem(row, 4, new QStandardItem(txt_name_dim));row++;}ui.tableView_var->setModel(tableV_var);}

结果图:

NetCDF(c++接口)读取NC文件信息相关推荐

  1. 用NetCDF创建和读取NC文件

    参考网站: 1.https://www.unidata.ucar.edu/ 2.http://crawler.iteye.com/blog/1059995 3.https://www.unidata. ...

  2. 利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)

    以中国日降雨量月均数据(nc文件包含12月)为例,提取某经纬度下的多月份像元值. ([数据分享]1960-2020年中国1公里分辨率月降水数据集) 一.确定经纬度所在行列号 以92.18E,30.47 ...

  3. 读取.nc文件数据及可视化

    nc格式的文件广泛应用于大气科学.水文.海洋学.环境模拟.地球物理等诸多领域.这种文件可以存储多维数字矩阵,同时又封装了自描述信息(例如经纬度.高度层.时间等). nc文件的IO接口也很普及,Pyth ...

  4. matlab中nc文件,MATLAB读取.nc文件

    clc clear ncFilePath='E:\批处理读取NC文件-MATLAB语言\1NC文件\VIC_Output_China_evap_1952.nc'; %% 显示结构 % ncdisp(n ...

  5. MATLAB:读取nc文件并将nc文件转为tif文件输出

    NC(NetCDF network Common Data Form,译为"网络通用数据格式") 文件是将多个时段的数据存储在一个文件当中. 内容格式如下: •从数学上来说,net ...

  6. python读取nc文件并转换成csv_使用Python截取nc文件数据保存到CSV文件-Go语言中文社区...

    问题要求: 编写一个函数完成以下任务:截取经度在23°N-40°N,纬度在118°E-131°E范围内各属性不同深度的数据,使用Python中合适的数据结构将截取的数据保存到同名CSV文件中.(nc文 ...

  7. MATLAB 批量读取NC文件并转为TIF文件

    因为课题处理30年的降雨和蒸发的遥感资料(.NC格式),而想要在Arcgis中处理要求的是raster格式的,所以需要批量转化为tif文件,所以在此分享自己改编之后的代码,可以简洁明了的实现这个过程: ...

  8. python读取nc文件转成img_使用python的netCDF4库读取.nc文件 和 创建.nc文件[转]

    使用python netCDF4库读取.nc文件 和 创建.nc文件 1. 介绍 .nc(network Common Data Format)文件是气象上常用的数据格式,python上读取.nc使用 ...

  9. 学习笔记_ncl_读取nc文件中的变量_制作nc文件的方法

    由于生成的文件较大较多,在超算上不方便使用matlab,只好向ncl势力低头 目的是在超算上对相关结果进行第一步简单处理后,下载到pc上再进行其他处理 ncl新手 如果是从已有的nc文件中读取变量到新 ...

最新文章

  1. 管理“95后”,切记这3点
  2. 通过 PSO实现TSP问题优化
  3. ubuntu codeblocks 设置用默认的gnome-terminal进行调试
  4. java icache_Java ICacheWordSubscriber類代碼示例
  5. 2013年国家计算机一级考试试题,2013年计算机一级的考试试题.doc
  6. C#刷遍Leetcode面试题系列连载(6):No.372 - 超级次方
  7. IBM System p5 服务器 HACMP 安装指南
  8. 通过图片 找到桌面相同图片区域坐标_非常萌的桌面工具-bongo cat mver0.1.6
  9. esri-leaflet入门教程(3)-自定义底图
  10. C#获取程序所在的目录
  11. 05、应用程序数据操作(下)
  12. bzero 和 memset 函数对比
  13. 关于Java中TCP/IPMonitor监听器无响应的心得
  14. 常用Gis通用符号库大全
  15. 精细加工领域中超快激光的应用
  16. 位置式与增量式PID代码(C语言实现)
  17. 关于PHP签名中的容易犯错问题记录
  18. 信息系统项目管理师真题2017下半年附答案解析(1)
  19. 非线性规划模型、0-1整数规划模型
  20. 阿里 P7 到底是怎样的水平 ???

热门文章

  1. openstack详解(十七)——openstack Nova其他配置
  2. sublime解决mel在maya无法打开简体中文问题
  3. NX二次开发-UFUN替换组件UF_ASSEM_use_alternate
  4. c语言中怎么定义的字符串,C语言中定义字符串的几种方式
  5. [Activeden] flachina A004 Advanced XML Website英文原版flash+xml商业整站
  6. 十条绿色IT最佳实践共建高效节能数据中心
  7. php hash hmac 优势,PHP hash_hmac与Python hmac
  8. 扎牢基础,深入底层,面试我可造火箭:MySQL+JVM+23种设计模式
  9. 测试拳击速度软件,有没有专门看拳击的app?推荐一款不错的拳击app
  10. python绘制动态心电图_Python-Evoked地形图可视化