YouTube | Facebook | X(Twitter) | RSS

ラベルの表示

2016/9/1 (木)

Public Sub ShowLabel()
    Dim pMxDocument As IMxDocument
    Set pMxDocument = ThisDocument
     
    Dim pGeoFeatureLayer As IGeoFeatureLayer
    Set pGeoFeatureLayer = pMxDocument.FocusMap.Layer(0)
     
    Dim pAnnotateLayerPropertiesCollection  As IAnnotateLayerPropertiesCollection
    Set pAnnotateLayerPropertiesCollection = pGeoFeatureLayer.AnnotationProperties
    'pAnnotateLayerPropertiesCollection.Clear    'ラベル設定の初期化
     
    '新規LabelEngineLayerPropertiesオブジェクトの作成
    Dim pLabelEngineLayerProperties As ILabelEngineLayerProperties
    pAnnotateLayerPropertiesCollection.QueryItem 0, pLabelEngineLayerProperties
     
    ' ラベルに使用するフィールド名を設定
    pLabelEngineLayerProperties.Expression = "[Name]"
     
    '[配置プロパティ] → [重なり回避] タブ(全タイプのレイヤ)
    Dim pOverposterLayerProperties2  As IOverposterLayerProperties2
    Set pOverposterLayerProperties2 = pLabelEngineLayerProperties.BasicOverposterLayerProperties
     
    '[重なり回避] タブ → [ラベルの重複を許可]
    pOverposterLayerProperties2.TagUnplaced = False 'チェックする場合は False
     
    '[配置プロパティ] → [配置] タブ(全タイプのレイヤ)
    Dim pBasicOverposterLayerProperties4 As IBasicOverposterLayerProperties4
    Set pBasicOverposterLayerProperties4 = pLabelEngineLayerProperties.BasicOverposterLayerProperties
     
    '[配置] タブ(ライン レイヤ)
    Dim pLineLabelPosition As ILineLabelPosition
    Set pLineLabelPosition = pBasicOverposterLayerProperties4.LineLabelPosition
     
    '[配置] → 位置(ライン レイヤ)
    pLineLabelPosition.Above = True
    pLineLabelPosition.OnTop = True
    pLineLabelPosition.Below = True
     
    '変更したオブジェクトを再設定(値書き込みのため)
    pBasicOverposterLayerProperties4.LineLabelPosition = pLineLabelPosition
     
    '[このレイヤのラベルを表示]にチェックを設定
    pGeoFeatureLayer.DisplayAnnotation = True
     
     
    'ラベル クラスの追加
    Dim pClone As IClone
    Set pClone = pLabelEngineLayerProperties
     
    Dim pLabelEngineLayerProperties2 As ILabelEngineLayerProperties
    Set pLabelEngineLayerProperties2 = pClone.Clone '複製
     
    pLabelEngineLayerProperties2.Expression = "[KEN]"
     
    Dim pAnnotateLayerProperties2 As IAnnotateLayerProperties
    Set pAnnotateLayerProperties2 = pLabelEngineLayerProperties2
    pAnnotateLayerProperties2.WhereClause = """KEN"" = '北海道'"
     
    pLabelEngineLayerProperties2.Add pAnnotateLayerProperties2
     
    '画面の再描画
    pMxDocument.ActiveView.Refresh
 
End Sub
  • この記事を書いた人

羽田 康祐

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

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