在mayavi中沿流线检索值

时间:2018-05-11 14:18:37

标签: mayavi

我有一个由[0] => Array ( [fsn] => 1219601 [ac_type] => 748 [flt_type] => SS [fltcat] => CG [aircraft_registration] => N123XY [flt_customer] => CUSTOMER [airline_code] => Acme [flt_no] => 949 ) vxvy以及窝点定义的速度字段和密度配置文件。所有这些变量都是3D数组,例如

vz

vx.shape (256,256,256) vyvz相同。

flow命令正常工作,例如

dens

我可以看到场线。现在,要检索位于x,y,z位置的fl = flow(vx,vy,vz, seedtype='point', integration_direction='both', scalars=dens) vx,vy,vz的值,就像我过去所做的那样(几年前使用之前版本的mayavi,我想)是

dens

然后

dataset = fl.outputs[0]

但是正在运行

x, y, z = dataset.points.to_array().T
densstream = np.array(dataset.point_data.get_array(0))
vstream = np.array(dataset.point_data.get_array(1))

我收到以下错误:

  

AttributeError:' AlgorithmOutput'对象没有属性' points'。

输入

x, y, z = dataset.points.to_array().T

我得到了

dataset

我使用的是mac OS 10.12.6,Python 2.7.15和IPython 5.5.0。 你能帮帮我吗?

干杯

1 个答案:

答案 0 :(得分:0)

较新版本的mayavi修改了某些tvtk对象的输出端口,从旧版本的tvtk.obj.outputtvtk_obj.output_port。后者是tvtk的algorithm_output子类,不包含点数据,这是错误消息的原因。

在mayavi / modules / streamline.py中,方法_streamline_type_changed(self,value): 通过configure_outputs(self, st)(一种tvtk / common.py方法)更新流线对象的输出端口,但连接指向self.stream_tracer.output_port而不是self.stream_tracer.output。后者是正确的poly_data子类,并且包含沿流线的点数据。 所以治愈很简单:

dataset = fl.stream_tracer.output

顺便说一句,我也尝试将函数调用修改为configure_outputs(self, st.output),尽管fl.outputs[0]正确连接到poly_data输出,但mayavi场景中不再显示流线。 / p>