FAQ
ArcObjects でフィーチャの選択セットを切り替える方法

ナレッジ番号:5565 | 登録日:2023/07/27 | 更新日:2024/11/21

概要

ArcMap にある [選択セットの切り替え] 機能を ArcObjects を用いて実装する方法です。

ISelectionSet::Combine メソッドに esriSetDifference を渡すことによって、レイヤー内の選択セットと全フィーチャの差分を取得します。

Image

サンプル コード

1.現在の選択されているフィーチャの選択セットを取得

//名前空間の設定
//using ESRI.ArcGIS.ArcMapUI;
//using ESRI.ArcGIS.Carto;
//using ESRI.ArcGIS.Geodatabase;
//using System.Windows.Forms;

IMxDocument pMxDoc = ArcMap.Document;
IMap pMap = pMxDoc.FocusMap;
IActiveView pActiveView = pMxDoc.ActiveView;
IFeatureLayer pFeatureLayer = pMap.get_Layer(0) as IFeatureLayer;

//選択セットの取得
IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;
ISelectionSet pSelectionSet = pFeatureSelection.SelectionSet;
'名前空間の設定
'Imports ESRI.ArcGIS.ArcMapUI
'Imports ESRI.ArcGIS.Carto
'Imports ESRI.ArcGIS.Geodatabase
'Imports System.Windows.Forms

Dim pMxDoc As IMxDocument = My.ArcMap.Document
Dim pMap As IMap = pMxDoc.FocusMap
Dim pFeatureLayer As IFeatureLayer = pMap.Layer(0)

'選択セットの取得
Dim pFeatureSelecion As IFeatureSelection = pFeatureLayer
Dim pSelectionSet As ISelectionSet = pFeatureSelecion.SelectionSet

2.対象のフィーチャ レイヤーに格納されているすべてのフィーチャを選択セットとして取得

//IFeatureClass::Select メソッドを使用し、すべてのフィーチャを選択セットとして取得します。
ISelectionSet pAllFeature = pFeatureLayer.FeatureClass.Select(null,esriSelectionType.esriSelectionTypeIDSet,esriSelectionOption.esriSelectionOptionNormal,null);
'IFeatureClass::Select メソッドを使用し、すべてのフィーチャを選択セットとして取得します。
Dim pAllFeature As ISelectionSet = pFeatureLayer.FeatureClass.Select(Nothing, esriSelectionType.esriSelectionTypeIDSet, esriSelectionOption.esriSelectionOptionNormal, Nothing)

3.選択セットの切り替え

ISelectionSet pNewSelection;

//ISelectionSet::Combine メソッドを使用して、すべてのフィーチャから現在選択されていないフィーチャを選択セットとして取得します。
pAllFeature.Combine(pSelectionSet, esriSetOperation.esriSetDifference, out pNewSelection);

MessageBox.Show("選択フィーチャ数 : " + pSelectionSet.Count + "\n" + "全フィーチャ数 : " + pAllFeature.Count + "\n" + "切り替えた選択フィーチャ数:" + pNewSelection.Count);

//レイヤーの選択セットを新しく取得した選択セットに切り替えます。
pFeatureSelection.SelectionSet = pNewSelection;
pActiveView.Refresh();
Dim pNewSelection As ISelectionSet

'ISelectionSet::Combine メソッドを使用して、すべてのフィーチャから現在選択されていないフィーチャを選択セットとして取得します。
pAllFeature.Combine(pSelectionSet, esriSetOperation.esriSetDifference, pNewSelection)

MessageBox.Show("選択フィーチャ数 : " & pSelectionSet.Count & "\n" & "全フィーチャ数 : " & pAllFeature.Count & "\n" & "切り替えた選択フィーチャ数:" & pNewSelection.Count);

'レイヤーの選択セットを新しく取得した選択セットに切り替えます。
pFeatureSelecion.SelectionSet = pNewSelection
pMxDoc.ActiveView.Refresh()

メタデータ

機能

種類

製品