YouTube | Facebook | X(Twitter) | RSS

簡単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を実装しているので、レイヤから直接テーブルにアクセスすることができるのですが、これもフィルタ設定の影響をうけて条件と一致するレコードのみ取得されます。

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

  • この記事を書いた人

羽田 康祐

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

-プログラミング, ArcGIS
-