• PIE-SDK For C++打开栅格数据


    1.功能简介

            GIS将地理空间数据表示为矢量数据和栅格数据。矢量数据模型使用点、线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点、河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联。栅格数据模型使用一个格网和格网元胞(像元)代表空间要素,元胞值表示该元胞位置的空间要素属性。栅格数据模型适用于表示连续的要素,如海拔和降水量。

    [矢量数据模型]                                                                                              [栅格数据模型]

             PIE支持多种矢量数据的打开,下面我们就介绍如何在PIE中打开栅格数据。

    2.功能实现说明

    2.1栅格数据介绍

       常见的栅格数据文件格式包括tifftifimgdat等,它们采用文件的方式存储相关信息,一个Tiff数据的文件结构如下所示(GF1数据为例):

    [Tiff数据文件结构]

    编号

    后缀

    文件说明

    1

    .tiff

    基本文件,存储栅格数据的像素、坐标系、坐标等信息;

    2

    .jpg

    可选文件,栅格数据的示意图;

    3

    .rpb

    可选文件,坐标参数文件;

    4

    .xml

    可选文件,数据相关信息文件;

    5

    .ovr/aux.xml

    可选文件,栅格数据金字塔文件;

    [Tiff数据文件结构说明]

    2.2实现思路及原理说明

    第一步

    通过文件路径打开栅格数据集

    第二步

    通过栅格数据集创建栅格图层

    2.3核心接口与方法

    接口/

    方法

    说明

    SysDataSource::DatasetFactory

    OpenRasterDataset

    打开栅格数据集

    SysCarto::LayerFactory

    CreateDefaultRasterLayer

    创建栅格图层

    2.4示例代码

    项目路径

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

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/01.GF1/GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600/xxx.tif

    视频路径

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

    示例代码

    方法(一)

    QString filter = "Raster Files (*.tif *.tiff *.img *.bmp *.jpg *.ldf *.dat *.1bd *.1b);;S57 Files (*.000);;HDF Files (*.hdf *.h5);;NC Files (*.nc);;All Files (*.*)";

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

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

        //直接创建layer进行添加

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

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

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

     

    方法(二)

    QString filter = "Raster Files (*.tif *.tiff *.img *.bmp *.jpg *.ldf *.dat *.1bd *.1b);;S57 Files (*.000);;HDF Files (*.hdf *.h5);;NC Files (*.nc);;All Files (*.*)";

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

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

        for each (QString _file in lstFile)

        {

            SysDataSource::RasterDatasetPtr rasterDatasetPtr = SysDataSource::DatasetFactory::Instance()->OpenRasterDataset(_file, SysDataSource::OpenMode::GA_ReadOnly);

            if (rasterDatasetPtr!=nullptr)

            {

                SysCarto::RasterLayerPtr rasterLayerPtr = SysCarto::LayerFactory::Instance()->CreateDefaultRasterLayer(rasterDatasetPtr);

                if (rasterLayerPtr!=nullptr)

                {

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

                }

            }

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

        }

    2.5示例截图

  • 相关阅读:
    kafka-eagle监控kafka
    ZABBIX自动发现Redis端口并监控
    用Redislive监控redis
    zabbix监控hbase
    zabbix监控zookeeper
    zabbix监控nginx日志状态码
    深入理解JVM-内存溢出案例演示与分析
    深入理解JVM-hotspot虚拟机对象探秘
    java开发手册-总结与补充
    IntelliJ IDEA快速自动生成Junit测试类
  • 原文地址:https://www.cnblogs.com/PIESat/p/12367376.html
Copyright © 2020-2023  润新知