YouTube | Facebook | X(Twitter) | RSS

ArcScene と ArcGlobe によるクリック地点のポイント座標取得

2016/9/1 (木)

'ArcSceneによるクリック地点のポイント座標取得
Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)
    Dim pSxDocument As ISxDocument
    Set pSxDocument = ThisDocument
     
    Dim pSceneGraph As ISceneGraph
    Set pSceneGraph = pSxDocument.Scene.SceneGraph
     
    'マウスクリックして取得できる最短のフィーチャを対象
    Dim pPoint As IPoint
    pSceneGraph.Locate pSceneGraph.ActiveViewer, x, y, esriScenePickAll, True, pPoint, Nothing, Nothing
     
    Debug.Print pPoint.x, pPoint.y, pPoint.Z
     
    '複数のレイヤを対象
    Dim pHit3DSet As IHit3DSet
    pSceneGraph.LocateMultiple pSceneGraph.ActiveViewer, x, y, esriScenePickAll, True, pHit3DSet
     
    If pHits Is Nothing Then
        MsgBox "ヒットしませんでした"
        Exit Sub
    End If
     
    Debug.Print "取得したフィーチャ数:" & pHit3DSet.Hits.Count
 
End Sub
 
'ArcGlobeによるクリック地点のポイント座標取得
Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)
    Dim pGMxDocument As IGMxDocument
    Set pGMxDocument = ThisDocument
     
    Dim pGlobe As IGlobe
    Set pGlobe = pGMxDocument.Scene
     
    Dim pGlobeDisplay As IGlobeDisplay
    Set pGlobeDisplay = pGlobe.GlobeDisplay
     
    'マウスクリックして取得できる最短のフィーチャを対象
    Dim pPoint As IPoint
    pGlobeDisplay.Locate pGlobeDisplay.ActiveViewer, x, y, False, True, pPoint, Nothing, Nothing
     
    Dim dblHeight As Double
    pGlobeDisplay.GetSurfaceElevation pPoint.x, pPoint.y, True, dblHeight
     
    Debug.Print pPoint.x, pPoint.y, dblHeight
 
End Sub
  • この記事を書いた人

羽田 康祐

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

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