python - 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 文档很大,所以也许我错过了什么?
解决方案
您缺少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()
推荐阅读
- sql-server - Crystal Report 仅显示 DetailReport 部分 VB.NET 和 SQL Server 中的第一条记录
- javascript - 禁用某些选择复选框上的按钮
- php - Gcloud 在 LAMP 堆栈上公开 yii
- gremlin - 如何在 gremlinpython 中使用 geoshape
- docker - 如何更改哨兵码头中的 config.yml?
- javascript - 解决 Javascript Promises 列表 - 按顺序?
- php - 如何连接到 Laravel 中的另一个数据库(多数据库 HUNDREDS)
- c# - 如何制作列表中具有非空字段的元素编号列表?
- python - Django 代码中 Q 对象中 query.connector 的值如何设置?
- ms-media-foundation - 如何在 mediafoundation source Reader 和 sink writer 中支持 mxf 文件格式