我有一个由[0] => Array
(
[fsn] => 1219601
[ac_type] => 748
[flt_type] => SS
[fltcat] => CG
[aircraft_registration] => N123XY
[flt_customer] => CUSTOMER
[airline_code] => Acme
[flt_no] => 949
)
,vx
和vy
以及窝点定义的速度字段和密度配置文件。所有这些变量都是3D数组,例如
vz
vx.shape
(256,256,256)
,vy
和vz
相同。
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。 你能帮帮我吗?
干杯
答案 0 :(得分:0)
较新版本的mayavi修改了某些tvtk对象的输出端口,从旧版本的tvtk.obj.output
到tvtk_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>