基于GDAL库,读取海洋风场数据(.nc格式)c++版

这篇博客介绍了如何在C++环境下,利用GDAL库读取.nc格式的海洋风场数据。内容涵盖数据集的组成部分(uwnd, vwnd, nobs/wspd)以及数据存储的四个波段。通过配置GDAL和NetCDF库,展示了在QT+VS2017中读取和显示数据的代码片段,证明了数据读取的成功。" 135687411,13683317,FaceForensics++数据库下载详细教程,"['人工智能', '视觉检测', '数据库管理']
摘要由CSDN通过智能技术生成

        经过这一段时间的对海洋数据的处理,接触了大量的与海洋相关的数据,例如海洋地形、海洋表面温度、盐度、湿度、云场、风场等数据,除了地形数据是grd格式外,其他的都是nc格式的数据。本文将以海洋风场数据为例,进行nc格式文件的读取。

         海洋风场数据(ccmp_wind)一般情况下会包含三个数据集:第一个数据集是uwnd(standard_name = "eastward_wind"),第二个数据集是vwnd(standard_name = "northward_wind"),第三个数据集是nobs或者wspd。前两个数据集是矢量数据,表示此处的风场方向最后一个数据集是标量数据,代表此处的风速。每个数据集中数据的存储又分为四个波段(也可以说是图层),一天的观测时间分为四个时间点,所以有四个图层。

          GDAL库可以提供对nc格式数据的读取,本次数据的读取是在qt+vs2017环境下配置gdal库和netcdf库,环境的配置可以在网上找到,GDAL库的配置可以根据《GDAL源码剖析和开发指南》书中的内容进行编译和配置,配置完成后就可以运行数据,读取nc文件。

           数据读取的代码如下:

头文件:

 1 #ifndef CCMPFILEREAD_H
 2 #define CCMPFILEREAD_H
 3 class ccmpFileRead
 4 {
 5 public:
 6     void ccmpFileRead::fileread(const char*ccmpFilename);
 7 };
 8 
 9 
10 
11 #endif // CCMPFILEREAD_H

源文件:

  1 #include "ccmpfileread.h"
  2 
  3 #include <gdal_priv.h>
  4 #include <vector>
  5 #include <QVector>
  6 
  7 #include <string>
  8 #include <QString>
  9 #include <QStringList>
 10 #include <QDebug>
 11 
 12 #include <fstream>
 13 
 14 using namespace std;
 15 
 16 void ccmpFileRead::fileread(const char *ccmpFilename)
 17 {
 18     vector <string>         vFileSets;
 19     vector <string>         pStrDesc;
 20     vector<vector<float>>   allSSTPixelNum1,allSSTPixelNum2,allSSTPixelNum3;
 21 
 22 
 23     GDALAllRegister();
 24     CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");//中文路径
 25     GDALDataset* fileDataset = (GDALDataset*) GDALOpen(ccmpFilename,GA_ReadOnly);//打开HDF数据集
 26     if (fileDataset == NULL)
 27     {
 28         return;
 29     }
 30 
 31     char** sublist = GDALGetMetadata((GDALDatasetH) fileDataset,"SUBDATASETS");//获得数据的字符串,可以打印出来看看自己需要的数据在那
 32 
 33     int iCount = CSLCount(sublist);
 34     if(iCount <= 0){
 35
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值