首页 > 解决方案 > vtk 阅读器不会从二进制 .vtk 文件中读取所有数据数组

问题描述

我想将二进制 .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 文档很大,所以也许我错过了什么?

标签: pythonbinaryfilesvtk

解决方案


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

推荐阅读