我想将二进制.vtk文件的内容上传到python中。我的python vtk包装器随conda一起安装,版本是8.2.0。
尽管我知道该文件应至少包含9个标量数组和2个向量数组,但我的脚本输出显示只有2个。下面是我的脚本。
import vtk
reader = vtk.vtkDataSetReader()
reader.SetFileName("output_binary_6.vtk")
reader.Update()
dataSet = reader.GetOutput()
vtkPointData = dataSet.GetPointData()
pd = dataSet.GetPointData()
pd.GetNumberOfArrays() # Gives 0
cd = dataSet.GetCellData()
cd.GetNumberOfArrays() # Gives 2, I expect 11
应用于输出文件的ASCII版本的grep给出以下文本行
CoRheoS 2 Output Data
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 269104 float
CELLS 255162 2296458
CELL_TYPES 255162
FIELD FieldData 1
TIME 1 1 double
CELL_DATA 255162
SCALARS concentration float
LOOKUP_TABLE default
SCALARS potential float
LOOKUP_TABLE default
VECTORS particle_flux float
VECTORS current_density float
SCALARS overpotential float
LOOKUP_TABLE default
SCALARS materialIdentifier float
LOOKUP_TABLE default
SCALARS ise float
LOOKUP_TABLE default
SCALARS iseAverage float
LOOKUP_TABLE default
SCALARS individualOCV float
LOOKUP_TABLE default
SCALARS platingCondition float
LOOKUP_TABLE default
但是上面的脚本仍然只能看到2。
如何获取剩余数据? vtk文档很大,所以也许我错过了什么?
答案 0 :(得分:1)
您缺少ReadAll*On
方法。参见文档:
https://vtk.org/doc/nightly/html/classvtkDataReader.html#a5dbeb7d4ead33542721785646f8bb94f
import vtk
reader = vtk.vtkDataSetReader()
reader.SetFileName("output_binary_6.vtk")
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
reader.ReadAllTensorsOn()
reader.ReadAllFieldsOn()
reader.Update()