1.功能簡介

         GIS將地理空間數據表示為矢量數據和柵格數據。矢量數據模型使用點、線和多邊形來表示具有清晰空間位置和邊界的空間要素,如控制點、河流和宗地等,每個要素被賦予一個ID,以便與其屬性相關聯。柵格數據模型使用一個格網和格網元胞(像元)代表空間要素,元胞值表示該元胞位置的空間要素屬性。柵格數據模型適用於表示連續的要素,如海拔和降水量。

獲取張量中為true的索引_數據

獲取張量中為true的索引_數據_02

[矢量數據模型]                                                                                                         [柵格數據模型]

   目前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

示例代碼

voidPIEMainWindow::On_ActionReadDataSetInfo_Triggered(boolchecked) 
{ 
SysCarto::LayerPtrcurrentLayerm_pCurrentControl->GetActiveView()->GetCurrentLayer(); 
ifcurrentLayer==nullptr) return; 
SysCarto::FeatureLayerPtrfeatureLayercurrentLayer; 
iffeatureLayer==nullptr) return; 
     
SysDataSource::FeatureClassPtrfcPtrfeatureLayer->GetFeatureClass(); 
 
QStringfileNamefcPtr->GetName(); 
qlonglongfeatureCountfcPtr->GetFeatureCount(); 
QStringspatialReferencefcPtr->GetFeatureDataset()->GetSpatialReference()->GetName(); 
QStringmessageQString("數據名稱:%1;\r\n要素的數量:%2;\r\n數據空間參考:%3").arg(fileName).arg(featureCount).arg(spatialReference); 
QMessageBox::information(this, "圖層信息", message, QMessageBox::StandardButton::Ok); 
 
//要素遍歷,讀取字段信息,並提示
intIndexfcPtr->GetFields()->GetFieldIndex("NAME");//獲取NAME字段索引
SysDataSource::FeatureCursorPtrpCursorfcPtr->Search(nullptr); 
SysDataSource::FeaturePtrpFeaturepCursor->NextFeature(); 
whilepFeature!=nullptr) 
    { 
QStringvaluepFeature->GetValue(Index).toString(); 
QMessageBox::information(this, "字段值", value, QMessageBox::StandardButton::Ok); 
 
pFeature=nullptr; 
    } 
}

2.4 示例截圖