簡単FeatureCursor取得

 2008/3/5 (水)    

久しぶりにArcObjectsネタです。

普通レイヤからFeatureCursorオブジェクトを取得するには,FeatureClassを取りに行くのでこのように書きます。

Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMxDocument.FocusMap.Layer(0)

Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureLayer.FeatureClass

Dim pFeatureCursor As IFeatureCursor
Set pFeatureCursor = pFeatureClass.Search(Nothing, True)

ArcObjectsを数年やってて今日はじめてこんな方法があることを知りました。コード量の2行削減に成功!

Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMxDocument.FocusMap.Layer(0)

Dim pFeatureCursor As IFeatureCursor
Set pFeatureCursor = pFeatureLayer.Search(Nothing, True)

フィーチャレイヤから直接カーソル オブジェクトを取得できるんですね。

ただし,レイヤに対してフィルタ設定(IFeatureLayerDefinition)をしてると,IFeatureLayer::Searchの戻り値はフィルタ設定の条件に一致するレコードしか取得することができません。

ちなみに,FeatureLayerクラスはITableを実装しているので,レイヤから直接テーブルにアクセスすることができるのですが,これもフィルタ設定の影響をうけて条件と一致するレコードのみ取得されます。

意外と初歩的なところが抜けてたりします。

Copyright© WINGFIELD since1981 , 2018 All Rights Reserved.