簡體   English   中英

讀取具有多個標量的.vtk文件

[英]Reading .vtk file with multiple scalars

我在讀取具有多個標量的.vtk文件時遇到問題。 這是一個示例文件“ data_test”,我假設它描述了單細胞網格上的兩個標量。

# 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')會引發錯誤。 我究竟做錯了什么?

表達命令

reader.ReadAllScalarsOn()

放置在reader.Update()之前,hm。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM