YouTube | Facebook | Twitter  Feed

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

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

関連記事

  • この記事を書いた人

羽田 康祐

Twitter#一日一図法を連載中。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、元PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、青山学院大学非常勤講師を兼務。発言は個人の見解です。

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