YouTube | Facebook | Twitter  Feed

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上級技術者、Esri認定インストラクター、測量士補、潜水士、元PADIダイブマスター、四アマ。GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、発言は個人の見解です。

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

© 2021 WINGFIELD since1981