• PIE-SDK For C++打开矢量数据


    1、功能简介

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

     [矢量数据模型]

    [栅格数据模型]

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

    2、功能实现说明

    2.1 Shape数据介绍

            Shapefile是由ESRI开发后被广泛应用的数据格式,它采用文件的方式分开存储数据的控件信息和属性信息,但其不能存储拓扑关系,具有简单、快速显示的优点。一个Shape数据的文件结构如下所示:

    [Shape数据文件结构]

    编号

    后缀

    文件说明

    1

    .shp

    基本文件,存储地理要素的几何图形信息;

    2

    .dbf

    基本文件,存储地理要素的属性信息;

    3

    .shx

    基本文件,存储图形要素与属性信息的索引;

    4

    .prj

    可选文件,存储数据的空间参考信息;

    5

    .sbn/.sbx

    可选文件,存储数据的空间索引信息(ESRI创建的空间索引);

    6

    .qix

    可选文件,存储数据的空间索引信息(PIE创建的空间索引);

    [Shape数据文件结构说明]

    2.2 实现思路及原理说明

    第一步

    根据文件路径打开矢量数据集;

    第二步

    通过矢量数据集创建矢量图层;

    2.3 核心接口与方法

    接口/

    方法

    说明

    SysDataSource::DatasetFactory

    OpenFeatureDataset

    打开矢量数据集

    SysCarto::LayerFactory

    CreateDefaultFeatureLayer

    创建矢量图层

    2.4 示例代码

    项目路径

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

    数据路径

    百度云盘地址下/PIE示例数据/矢量数据/Shape/省级行政区.shp

    视频路径

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

    示例代码

    方法(一)

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

    QString filter = "Shapefiles (*.shp)";

            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();

    方法(二)

    //通过Featuredataset进行layer创建

        QString filter = "Shapefiles (*.shp)";

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

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

        for each (QString _file in lstFile)

        {

            SysDataSource::FeatureDatasetPtr featureDatasetPtr = SysDataSource::DatasetFactory::Instance()->OpenFeatureDataset(_file);

            if (featureDatasetPtr!=nullptr)

            {

                SysCarto::FeatureLayerPtr featureLayerPtr = SysCarto::LayerFactory::Instance()->CreateDefaultFeatureLayer(featureDatasetPtr);

                if (featureLayerPtr!=nullptr)

                {

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

                }

            }

        }

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

    2.5 示例截图

  • 相关阅读:
    Troubleshooting ORA-01555/ORA-01628/ORA-30036 During Export and Import (Doc ID 1579437.1)
    SRDC
    Troubleshooting ORA-01555
    ORA-01555 When Max Query Length Is Less Than Undo Retention, small or 0 Seconds (Doc ID 1131474.1)
    SRDC
    故障排除指南(TSG)-ORA-01552: Cannot Use System Rollback Segment for Non-System Tablespace (Doc ID 1579215.1)
    主说明:自动Undo管理的故障排除指南(Doc ID 1579081.1)
    vue指令
    day65
    vue基础
  • 原文地址:https://www.cnblogs.com/PIESat/p/12367126.html
Copyright © 2020-2023  润新知