如何通过鼠标单击图中的任意点从 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 分辨率
我使用了数字高程模型,使用 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 分辨率