YouTube | Facebook | X(Twitter) | RSS

単位当たりのピクセル幅を計算

2016/9/1 (木)

'データフレームの単位当たりのディスプレイ距離を計算
Sub fncCalculateDistance()
     
    'Applicationの取得
    Dim pMxApplication As IMxApplication
    Set pMxApplication = Application
     
    Dim pAppDisplay As IAppDisplay
    Set pAppDisplay = pMxApplication.Display
     
    Dim pDisplayTransformation As IDisplayTransformation
    Set pDisplayTransformation = pAppDisplay.DisplayTransformation
     
    'MapControlを使用する場合は、IMapControl2がFromMapPoint、ToMapPointメソッドを持っています
     
    'ディスプレイ単位の原点を作成
    Dim pDFromPoint As IPoint
    Set pDFromPoint = New Point
    pDFromPoint.PutCoords 0, 0
     
    'ディスプレイ単位の原点をデータフレームの座標系に準拠した座標値に変換
    Dim pFromPoint As IPoint
    Set pFromPoint = pDisplayTransformation.ToMapPoint(pDFromPoint.x, pDFromPoint.y)
    Debug.Print "ディスプレイ原点の空間座標", "X:" & pFromPoint.x, "Y:" & pFromPoint.y
     
    '移動量のシフト量を設定
    Dim lngUnit As Long
    lngUnit = 1
     
    'X方向へ設定単位X方向へシフトさせた空間座標値を取得
    Dim pToPoint As IPoint
    Set pToPoint = New Point
    pToPoint.PutCoords pFromPoint.x + lngUnit, pFromPoint.y
    Debug.Print "シフト先の空間座標", "X:" & pToPoint.x, "Y:" & pToPoint.y
     
    'ディスプレイ単位のシフト先ポイントを作成
    Dim lngToX As Long
    Dim lngToY As Long
    pDisplayTransformation.FromMapPoint pToPoint, lngToX, lngToY
     
    '単位はデータフレームで定義された座標系に準拠
    Debug.Print "単位当のディスプレイX距離", lngToX
 
End Sub
  • この記事を書いた人

羽田 康祐

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

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