vtk reader не читает все массивы данных из двоичного файла .vtk - PullRequest
0 голосов
/ 17 июня 2019

Я хочу загрузить содержимое двоичного файла .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

grep, примененный к ASCII-версии выходного файла, дает следующие текстовые строки

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 довольно большая, так что, может быть, я что-то пропустил?

1 Ответ

1 голос
/ 19 июня 2019

Вам не хватает методов 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()
...