1. はじめに
現在PIE SDKのサポートベクトルデータを変更または削除、以下の修正および削除機能ベクトルデータは、サンプルコードと一緒に導入されます。
2. 関数の実装上の注意
2.1 変更されたデータベクトル
2.2 アイデアや理論的根拠の実現
第一歩 |
取得したベクトルデータを修正する必要があります |
第二のステップ |
変更または要素の値に基づいて設定された条件を削除すると、 |
2.3 コアインタフェースメソッド
インタフェース/ クラス |
メソッド/ プロパティ |
説明 |
SysDataSource :: DatasetFactory |
OpenFeatureDataset(QStringの経路) |
特徴データセットを作成します。 |
SysDataSource :: FeatureDatasetPtr |
GetNextFeature() |
次の要素を取得します。 |
UpdateFeature() |
アップデート機能 |
|
DeleteFeature() |
削除機能 |
|
UpdateFeature() |
アップデート機能 |
|
SysDataSource :: FeaturePtr |
SetValue() |
セットのフィールド値 |
2.4 サンプルコード
プロジェクトパス |
ディスクアドレス百度クラウド/ PIE 例示的なプログラム/ 04 データ操作/ 05 変更されたデータベクトル |
データパス |
カスタム... |
ビデオパス |
ディスクアドレスBaiduのクラウド/ PIEのビデオチュートリアル/ 04 データ操作/ 05 改変ベクターデータ.AVI |
サンプルコード |
|
空PIEMainWindow :: On_ActionEditVectorData_Triggered (ブール値をチェックします) { QStringのフィルタ= "シェイプファイル(* .SHP)" 。 QStringので、inputFile = QFileDialog :: GetOpenFileName関数(nullptr 、" 編集するデータを選択してください" 、"" 、フィルター); もし(で、inputFile 。のisEmpty ()) { リターン; }
SysDataSource::FeatureDatasetPtr fDataSetPtr = SysDataSource::DatasetFactory::Instance()->OpenFeatureDataset(inputFile); if (fDataSetPtr == nullptr) return;
//删除要素 fDataSetPtr->DeleteFeature(0);//删除FID为0的要素 //修改要素 SysDataSource::FeatureClassPtr pFeatureClass = new SysDataSource::FeatureClass(fDataSetPtr); SysDataSource::FeatureCursorPtr pCursor = pFeatureClass->Search(nullptr); int index = pFeatureClass->GetFields()->GetFieldIndex("Name");//根据实际数据情况进行适配即可 //遍历要素,修改字段Name属性值为B SysDataSource::FeaturePtr pFeature = pCursor->NextFeature(); while (pFeature!=nullptr) { pFeature->SetValue(index, "B"); fDataSetPtr->UpdateFeature(pFeature); pFeature = pCursor->NextFeature(); } bool flag= fDataSetPtr->Save(); pCursor->Release(); SysCarto::LayerPtr fLayer = SysCarto::LayerFactory::Instance()->CreateDefaultLayer(inputFile); m_pCurrentControl->GetMap()->AddLayer(fLayer); m_pCurrentControl->GetActiveView()->Refresh(); } |
2.5 示例截图
修改前:
修改后: