zoukankan      html  css  js  c++  java
  • PIE-SDK For C++矢量数据读取

    1.功能简介

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

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

       目前PIE SDK支持多种数据格式的数据读取,下面对矢量数据格式的数据读取功能进行介绍。

    2.功能实现说明

    2.1 实现思路及原理说明

    第一步

    获取要读取数据的数据集

    第二步

    从数据集里面读取需要读取的信息

    2.2 核心接口与方法

    接口/

    方法/属性

    说明

    SysDataSource::FeatureDataset

    SpatialReference

    空间参考

    SysDataSource::FeatureClass

    GetFeatureCount()

    得到要素数量

    GetFields()

    获取所有字段

    GetFeatureDataset ()

    获取挂载的矢量数据集

    GetName()

    数据名称

    SysDataSource::FeatureCursorPtr

    NextFeature

    获取下一个要素

    2.3 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/04数据操作/03矢量数据集的读取

    数据路径

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

    视频路径

    百度云盘地址下/ PIE视频教程/04数据操作/03矢量数据集的读取.avi

    示例代码

    void PIEMainWindow::On_ActionReadDataSetInfo_Triggered(bool checked)

    {

        SysCarto::LayerPtr currentLayer = m_pCurrentControl->GetActiveView()->GetCurrentLayer();

        if (currentLayer == nullptr) return;

        SysCarto::FeatureLayerPtr featureLayer = currentLayer;

        if (featureLayer == nullptr) return;

        

        SysDataSource::FeatureClassPtr fcPtr = featureLayer->GetFeatureClass();

     

        QString fileName = fcPtr->GetName();

        qlonglong featureCount = fcPtr->GetFeatureCount();

        QString spatialReference = fcPtr->GetFeatureDataset()->GetSpatialReference()->GetName();

        QString message = QString("数据名称:%1; 要素的数量:%2; 数据空间参考:%3").arg(fileName).arg(featureCount).arg(spatialReference);

        QMessageBox::information(this, "图层信息", message, QMessageBox::StandardButton::Ok);

     

        //要素遍历,读取字段信息,并提示

        int Index = fcPtr->GetFields()->GetFieldIndex("NAME");//获取NAME字段索引

        SysDataSource::FeatureCursorPtr pCursor = fcPtr->Search(nullptr);

        SysDataSource::FeaturePtr pFeature = pCursor->NextFeature();

        while (pFeature!=nullptr)

        {

            QString value = pFeature->GetValue(Index).toString();

            QMessageBox::information(this, "字段值", value, QMessageBox::StandardButton::Ok);

     

            pFeature = nullptr;

        }

    }

    2.4 示例截图

  • 相关阅读:
    windows 创建python独立开发环境
    sql多列排序
    mysql 导入sql脚本中文乱码问题
    廖雪峰Python教学课后作业---datetime
    poj 1004:Financial Management(水题,求平均数)
    【POJ水题完成表】
    poj 1003:Hangover(水题,数学模拟)
    ytu 2558: 游起来吧!超妹!(水题,趣味数学题)
    poj 1005:I Think I Need a Houseboat(水题,模拟)
    hdu 2393:Higher Math(计算几何,水题)
  • 原文地址:https://www.cnblogs.com/PIESat/p/12372112.html
Copyright © 2011-2022 走看看