zoukankan      html  css  js  c++  java
  • 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 示例截图

  • 相关阅读:
    【题解】CF#983 E-NN country
    【题解】CF#403 D-Beautiful Pairs of Numbers
    【题解】CF#285 E-Positions in Permutations
    【题解】FJOI2015火星商店问题
    【题解】Atcoder AGC#01 E-BBQ Hard
    【题解】Atcoder AGC#03 E-Sequential operations on Sequence
    【题解】CF#280 C-Game on Tree
    【题解】CF#833 B-The Bakery
    [BZOJ3600] 没有人的算术 [重量平衡树+权值线段树]
    [bzoj3514][CodeChef GERALD07] Chef ans Graph Queries [LCT+主席树]
  • 原文地址:https://www.cnblogs.com/PIESat/p/12367513.html
Copyright © 2011-2022 走看看