YouTube | Facebook | X(Twitter) | RSS

レイヤーをコピーする方法

2009/1/21 (水)

ArcObjects には IClone というインタフェースがあり、これを実装しているクラスは IClone::Clone() メソッドによってオブジェクトの複製が行えます。しかし、TOC でレイヤをコピー&貼り付けのように、レイヤの複製を行いたい場合は、レイヤー クラスに IClone 実装されていないためが使えません。

その代わりに使用するのが IObjectCopy インタフェース。これは ObjectCopy クラスをインスタンス化して IObjectCopy::Copy()メ ソッドによってオブジェクトの複製を行います。

オブジェクトのコピーなので、FeatureLayer だとシンボルとか選択状態、フィルタ設定などの情報もすべてコピーされます。

ヘルプを読むと IPersistStream インタフェースを実装しているクラスに適用できるようです。基本的に CoClass と考えれば良いです。

サンプルコード

Public Sub CopyLayer()
'マップ ドキュメントを取得
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument

'マップを取得
Dim pMap As IMap
Set pMap = pMxDocument.FocusMap

'コピー元レイヤを取得
Dim pLayer As ILayer
Set pLayer = pMap.Layer(0)

'ObjectCopyの作成
Dim pObjectCopy As IObjectCopy
Set pObjectCopy = New ObjectCopy

'コピーレイヤを作成
Dim pNewLayer As ILayer
Set pNewLayer = pObjectCopy.Copy(pLayer)

'コピーしたレイヤをマップに追加
pMap.AddLayer pNewLayer

End Sub

参考

http://forums.esri.com/Thread.asp?c=93&f=1170&t=259909#798335

  • この記事を書いた人

羽田 康祐

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

-プログラミング, ArcGIS
-