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;\r\n要素的数量:%2;\r\n数据空间参考:%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 示例截图

posted @ 2020-02-27 14:45  PIESAT  阅读(380)  评论(0编辑  收藏  举报