zoukankan      html  css  js  c++  java
  • PIE SDK打开HDF、NC数据

     

    1. 功能简介

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

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

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

    2. 功能实现说明

    2.1 HDF数据介绍

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

     

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

     

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

    2.2 实现思路及原理说明

    第一步

    通过文件路径打开数据集

    第二步

    进行多数据集接口转换

    第三步

    通过多数据集创建多图层

    2.3 核心接口与方法

    接口/类

    方法

    说明

    DataSource.DatasetFactory

    OpenDataset

    打开数据集

    Carto.LayerFactory

    CreateDefaultMultiLayer

    创建多图层

    2.4 示例代码

    项目路径

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

    数据路径

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

    视频路径

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

    示例代码

     1 方法(一)
     2   // 获得要打开Shape数据的路径
     3   OpenFileDialog openFileDialog = new OpenFileDialog();
     4   openFileDialog.Filter = "HDF、NC数据|*.hdf;*.nc";
     5   if (openFileDialog.ShowDialog() != DialogResult.OK) return;
     6   // 打开图层
     7   string filePath = openFileDialog.FileName;
     8   ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(filePath);
     9   if (layer == null) return;
    10   // 添加图层到地图并刷新
    11   mapControMain.FocusMap.AddLayer(layer);
    12 mapControMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
    13 
    14 方法(二)
    15 OpenFileDialog openFile = new OpenFileDialog();
    16 openFile.Filter = "HDF、NC数据|*.hdf;*.nc";
    17 if (openFile.ShowDialog() != DialogResult.OK) return;
    18 
    19 //创建数据集
    20 IMultiDataset rDataset = PIE.DataSource.DatasetFactory.OpenDataset(openFile.FileName, OpenMode.ReadOnly) as IMultiDataset;
    21 if (rDataset == null) return;
    22        
    23 
    24 //创建图层
    25 IMultiLayer multilayer = PIE.Carto.LayerFactory.CreateDefaultMultiLayer(rDataset);
    26 if (multilayer == null)  return;
    27   
    28 //添加图层至地图
    29 mapControlMain.FocusMap.AddLayer(multilayer as ILayer);
    30 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    View Code

    2.5 示例截图

     

  • 相关阅读:
    VMWare的Cloud Foundry实践(二):和MongoDB对接成功~
    MongoDB实践
    MongoDB 可读性比较差的语句
    C#异步编程之:(一)Task对象和lamda表达式探究
    创建自己的awaitable类型
    C#异步编程之(三):深入 Async 和 Await 的实现及其成本
    Node.js实践
    MVC+EasyUI+三层新闻网站建立(六 tabs的完成)
    MVC+EasyUI+三层新闻网站建立(七:分页查询出数据)
    MVC+EasyUI+三层新闻网站建立(八,详情页面完成)
  • 原文地址:https://www.cnblogs.com/PIESat/p/10142801.html
Copyright © 2011-2022 走看看