如何通过鼠标单击图中的任意点从 Mayavi 3D 图中获取 data/coordinates

How to get data/coordinates from Mayavi 3D plot by mouseclick on any point in the plot

我使用了数字高程模型,使用 Mayavi mlab 创建地形的 3D 模型。 我的下一个任务是能够获取我在 3D 模型上单击的任何点的坐标。 一旦我得到坐标,我将它们映射到图像坐标并获得所需的数据。 但是目前,我不确定如何首先单击并获取点的坐标。我在 matplotlib 的 2D graphs/images 上完成了这个。但我是 Mayavi 的新手。请帮忙。

将 mouse_picker 附加到您的表面,并使用 picker_function 函数获取点坐标。

    my3DSurface= mlab.figure(size=(width,height), bgcolor=(0.45,0.45,0.45))
    my3DSurface.on_mouse_pick(picker_function)

    def picker_function(picker_obj):
        global x_pt, y_pt, maxx, miny,minx, maxy
        point2d = picker_obj.point_id
        if(point2d==-1):
            point2d=0
        else:

            demX_pt = np.floor((maxx - minx) / cell_size_x) +1
            demY_pt = np.floor((maxy - miny) / cell_size_y)

            md = point2d%demY_pt
            x_pt = md

            md = point2d-md
            y_pt = md/demY_pt

        return point2d

其中: minx = DEM 中的最小经度值

maxx = DEM 中的最大经度值

miny = DEM 中的最小纬度值

maxy = DEM 中的最大纬度值

cell_size_x = X 轴方向的 DEM 分辨率

cell_size_y = Y 轴方向的 DEM 分辨率