アノテーション フィーチャを変更する方法

      2017/11/22

ArcGISのアノテーション フィーチャを編集するには,[アノテーション]ツールバーを使用しますが,これをArcObjectsで操作する方法は以下のとおり。各フィーチャの属性値にテキストやフォントサイズなどが格納されてますが,これは閲覧に用いるだけで,本質的な情報は,"ELEMENT"フィールド内にBlob型で格納されているバイナリがそれに該当します。この中身はIAnnotationFeature::AnnotationプロパティからTextElementオブジェクトとして取得することができます。これを更新することで,他のフィールドに格納された属性値も更新されます。

以下はサンプルコード

Sub ChangeAnnotation()
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument

Dim pMap As IMap
Set pMap = pMxDocument.FocusMap

Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMap.Layer(0)

Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureLayer.FeatureClass

Dim pFeature As IFeature
Set pFeature = pFeatureClass.GetFeature(0)

'該当のアノテーション フィーチャからQI
Dim pAnnotationFeature As IAnnotationFeature
Set pAnnotationFeature = pFeature

'AnnotationプロパティからTextElementオブジェクトを取得
Dim pTextElement As ITextElement
Set pTextElement = pAnnotationFeature.Annotation

Dim pSymbolCollectionElement As ISymbolCollectionElement
Set pSymbolCollectionElement = pTextElement

'エレメントの移動
Dim pTransform2D As ITransform2D
Set pTransform2D = pTextElement
pTransform2D.Move 10, 10

'アノテーションの色を変更
Dim pRGBColor As IRgbColor
Set pRGBColor = pSymbolCollectionElement.Color
pRGBColor.RGB = RGB(255, 0, 0)
pSymbolCollectionElement.Color = pRGBColor

'アノテーションの角度を変更
Dim pTextSymbol As ITextSymbol
Set pTextSymbol = pTextElement.Symbol
pTextSymbol.Angle = 90
pTextElement.Symbol = pTextSymbol

'アノテーションの描画を更新
Dim pGraphicsContainer As IGraphicsContainer
Set pGraphicsContainer = pMap

pGraphicsContainer.UpdateElement pTextElement

'再描画
pMxDocument.ActiveView.Refresh

End Sub

 - GIS