「選択フィーチャからレイヤを作成」で作成されたレイヤを判別する方法

投稿日:2009/1/29 (木) 更新日:

ArcMap の機能に、特定のレイヤーから選択されたフィーチャ群を新しいレイヤーとして作成する機能があります。

選択フィーチャからレイヤーを作成

新しく作成されたレイヤー

レイヤを右クリック → [選択] → [選択フィーチャからレイヤーを作成]

この操作で新しく作成されたレイヤーは、特定のフィーチャ群だけが抜き出されただけで、データソースなどその他のプロパティはすべて出力元のレイヤと同じ情報を持っています。

レイヤー プロパティ

ここで、どうやって「選択フィーチャからレイヤーを作成」によって作成されたレイヤーなのかを判断できるかを調べたのですが、GUIだ とレイヤー名が

<元のレイヤー名> 選択

と書かれているかどうかで判断するしかありません。ただ、これだとレイヤー名を任意の名称に変更するとわからなくなってしまうのですが、ArcObjects だと IFeatureLayerDefinition::DefinitionSelectionSet でそれを判別することができました。

Dim pFeatureLayerDefinition  As IFeatureLayerDefinition
Set pFeatureLayerDefinition = pFeatureLayer                 'FeatureLayer

Debug.Print Not pFeatureLayerDefinition.DefinitionSelectionSet Is Nothing
'True:既存のフィーチャレイヤ
'False:選択フィーチャから作成されたレイヤ

Developer Help には以下のように書かれています(超意訳)。

IFeatureLayerDefinition::DefinitionSelectionSet プロパティは、IFeatureLayerDefinition::CreateSelectionLayer メソッドによって作成されたフィーチャレイヤのフィーチャ群を SelectionSet オブジェクトに保持します。CreateSelectionLayer メソッドが呼び出される前は、DefinitionSelectionSet プロパティはNothingが返されます。
※補足:CreateSelectionLayer は「選択フィーチャからレイヤーを作成」と同等の操作を実行するためのメソッドです。

今まで IFeatureLayerDefinition インタフェースは DefinitionExpression プロパティ(ArcMap の[フィルタ設定]に相当)しか知らなかったのですが、新たな発見がありました。

関連記事

-プログラミング, ArcGIS
-, ,

Copyright© WINGFIELD since1981 , 2018 All Rights Reserved.