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

関連記事

  • この記事を書いた人

羽田 康祐

Esri認定インストラクター、GIS上級技術者、測量士補、潜水士。GISy / GISc とその関連分野である地理学・地図学について日々の出来事で学んだ記憶を記録するためにブログを書いています。行動原理は伊達と酔狂。好きな地形は圏谷。好きな地図投影法はパースクインカンシャル図法。呉市生まれ広島市出身。GIS を使った自己紹介はこちら

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

© 2020 WINGFIELD since1981