vtk reader 不从二进制 .vtk 文件中读取所有数据数组

vtk reader doesn't read all the data arrays from a binary .vtk file

我想将二进制 .vtk 文件的内容上传到 python。我的 python vtk wrapper 是用 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 文档很大,所以我可能错过了什么?

您缺少 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()