0
我有阅读.vtk文件与多个标量问题。这是一个示例文件'data_test',我假设它在单节点网格上描述了两个标量。阅读.vtk文件与多个标量
# vtk DataFile Version 2.0
1, sec.
ASCII
DATASET RECTILINEAR_GRID
FIELD FieldData 2
TIME 1 1 double
1.0
SPACE 1 1 int
2
DIMENSIONS 2 2 1
X_COORDINATES 2 double
0.00000000000000E+0000
4.00000000000000E-0004
Y_COORDINATES 2 double
-4.28049291420691E-0002
-4.24045609948740E-0002
Z_COORDINATES 1 double
0.00000000000000E+0000
CELL_DATA 1
SCALARS first_scalar double 1
LOOKUP_TABLE default
1.00000071870987E+0012
SCALARS second_scalar double 1
LOOKUP_TABLE default
2.78177630625252E-0002
这是我尝试使用标准的python-VTK工具
来解析该文件from vtk import *
reader = vtk.vtkGenericDataObjectReader()
reader.SetFileName(r'data_test')
reader.Update()
vtk_out = reader.GetOutput()
scalar_names = [reader.GetScalarsNameInFile(i) for i in range(0, reader.GetNumberOfScalarsInFile())]
print 'scalar names\n', scalar_names
print '\ncell data\n', vtk_out.GetCellData()
评估给出
scalar names
**['first_scalar', 'second_scalar']**
cell data
vtkCellData (0x86671c0)
Debug: Off
Modified Time: 468
Reference Count: 2
Registered Events: (none)
**Number Of Arrays: 1**
**Array 0 name = first_scalar**
Number Of Components: 1
Number Of Tuples: 1
Copy Tuple Flags: (1 1 1 1 1 0 1 1)
Interpolate Flags: (1 1 1 1 1 0 0 1)
Pass Through Flags: (1 1 1 1 1 1 1 1)
Scalars:
Debug: Off
Modified Time: 441
Reference Count: 1
Registered Events: (none)
Name: first_scalar
Data type: double
Size: 1
MaxId: 0
NumberOfComponents: 1
Information: 0
Name: first_scalar
Number Of Components: 1
Number Of Tuples: 1
Size: 1
MaxId: 0
LookupTable: (none)
Array: 0x8887198
Vectors: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none)
这里的问题是,第二标只出现在名称中空间,但不是在单元格数据中,我不知道如何访问它。例如,我可以使用vtk_out.GetCellData().GetArray('first_scalar')
,但vtk_out.GetCellData().GetArray('second_scalar')
会引发错误。我究竟做错了什么?