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 の[フィルタ設定]に相当)しか知らなかったのですが、新たな発見がありました。