2016-01-22 176 views
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')会引发错误。我究竟做错了什么?

回答

0

一种表现命令

reader.ReadAllScalarsOn()

放置reader.Update()之前做这项工作,HM。