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

関連記事

  • この記事を書いた人

羽田 康祐

Esri認定インストラクター、GIS上級技術者、測量士補、潜水士。GISy / GISc とその関連分野である地理学・地図学について日々の出来事で学んだ記憶を記録するためにブログを書いています。行動原理は伊達と酔狂。好きな地形は圏谷。好きな地図投影法はパースクインカンシャル図法。呉市生まれ広島市出身。GIS を使った自己紹介はこちら

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

© 2020 WINGFIELD since1981