我使用了数字高程模型,使用Mayavi mlab创建地形的3D模型。我的下一个任务是能够获取我在3D模型上点击的任何点的坐标。一旦我得到坐标,我就会将它们映射到图像坐标,并获得所需的数据。但目前,我不确定如何首先点击并获取点的坐标。我已经在matplotlib中的2D图形/图像上完成了这项工作。但我是马亚维的新手。请帮忙。
将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分辨率