PIE-SDK For C++打开HDF、NC数据

1.功能简介

      HDF 是美国国家高级计算应用中心(National Center for Supercomputing Application)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。

      NCNetCDF的简称,其全称为Network Common Data Form(网络通用数据格式),其是针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。利用NetCDF可以对网格数据进行高效地存储、管理、获取和分发等操作。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作NetCDF 数据集。

      PIE支持HDFNC数据的浏览、读取和分析。

2.功能实现说明

2.1 HDF数据介绍

      HDFNC数据都属于科学数据集,一个HDFNC数据不仅包含多套栅格数据,还包括众多的元数据和属性数据。HDFNC数据的存储都采用了高效率的压缩,从而实现了高效的存储、分发。目前常用来浏览HDFNC数据的软件是HDF Explorer

[HDF Explorer以图片方式查看数据]

[HDF Explorer以表格方式查看数据]

2.2 实现思路及原理说明

第一步

通过文件路径打开数据集

第二步

进行多数据集接口转换

第三步

通过多数据集创建多图层

2.3 核心接口与方法

接口/

方法

说明

SysDataSource::DatasetFactory

OpenDataset

打开数据集

SysCarto::LayerFactory

CreateDefaultMultiLayer

创建多图层

2.4 示例代码

项目路径

百度云盘地址下/PIE示例程序/03.数据加载/03.打开HDFNC数据

数据路径

百度云盘地址下/PIE示例数据/00.FY/FY4A/**.hdf

视频路径

百度云盘地址下/PIE视频教程/03.数据加载/03.打开HDFNC数据.avi

示例代码

方法(一)

// 获得要打开Shape数据的路径

    QString filter = "HDF Files (*.hdf *.h5);;NC Files (*.nc)";

    QStringList lstFile = QFileDialog::getOpenFileNames(nullptr, "添加数据", "", filter);

    if (lstFile.count() < 1) return;

 

    QList<SysCarto::LayerPtr> lstLayers = SysCarto::LayerFactory::CreateDefaultLayers(lstFile);

    m_ptrHookHelper->GetFocusMap()->AddLayers(lstLayers);

    m_ptrHookHelper->GetActiveView()->Refresh();

 

方法(二)

    QString filter = "HDF Files (*.hdf *.h5);;NC Files (*.nc)";

    QStringList lstFile = QFileDialog::getOpenFileNames(nullptr, "添加数据", "", filter);

    if (lstFile.count() < 1) return;

    for each (QString _file in lstFile)

    {

        SysDataSource::MultiDatasetPtr multiDatasetPtr = SysDataSource::DatasetFactory::Instance()->OpenDataset(_file, SysDataSource::OpenMode::GA_ReadOnly);

        if (multiDatasetPtr!=nullptr)

        {

            SysCarto::LayerPtr multiLayerPtr = SysCarto::LayerFactory::Instance()->CreateDefaultMultiLayer(multiDatasetPtr);

            m_ptrHookHelper->GetFocusMap()->AddLayer(multiLayerPtr);

        }

        m_ptrHookHelper->GetActiveView()->Refresh();

    }

2.5 示例截图

posted @ 2020-02-26 16:09  PIESAT  阅读(478)  评论(0编辑  收藏  举报