簡體   English   中英

使用Python確定舊版VTK文件是否有效

[英]Determine if legacy VTK file is valid using Python

我需要使用Python讀取舊版VTK文件。 我想使用vtk模塊。 我大多數時候都取得了成功,但是在繼續之前,我需要能夠檢測VTK文件是否有效,而且我找不到能夠做到這一點的類型綁定過程或屬性。 這是VTK文件的最小示例。


# vtk DataFile Version 2.0
Scalar Data
ASCII
DATASET UNSTRUCTURED_GRID
POINTS      12 double
 -6.35000002E-03  0.00000000E+00  0.00000000E+00
  0.00000000E+00  0.00000000E+00  0.00000000E+00
 -6.35000002E-03  6.35000002E-03  0.00000000E+00
  0.00000000E+00  6.35000002E-03  0.00000000E+00
 -6.35000002E-03  0.00000000E+00  3.86600012E-02
  0.00000000E+00  0.00000000E+00  3.86600012E-02
 -6.35000002E-03  6.35000002E-03  3.86600012E-02
  0.00000000E+00  6.35000002E-03  3.86600012E-02
 -6.35000002E-03  0.00000000E+00  3.86600012E-02
  0.00000000E+00  0.00000000E+00  3.86600012E-02
 -6.35000002E-03  6.35000002E-03  3.86600012E-02
 -6.35000002E-03  6.35000002E-03  3.86600012E-02
CELLS         2        18
         8         0         1         2         3         4         5         6         7
         8         8         9        10        11        12        13        14        15
CELL_TYPES       2
11
11
CELL_DATA       2
SCALARS testdata float
LOOKUP_TABLE default
  1.0000E+00

該文件中的錯誤是,當標頭指示應該有兩個單元格數據時,僅給出了一個單元格數據。 這是讀取此數據的python文件。


import vtk 
from vtk.util import numpy_support as VN

f1=vtk.vtkUnstructuredGridReader()
f1.SetFileName('test.vtk')
f1.ReadAllScalarsOn()
f1.Update()
arr=VN.vtk_to_numpy(f1.GetOutput().GetCellData().GetArray('testdata'))
print arr 

這是輸出:

Generic Warning: In /home/vagrant/pisi/tmp/VTK-6.3.0-3/work/VTK-6.3.0/IO/Legacy/vtkDataReader.cxx, line 1379
Error reading ascii data. Possible mismatch of datasize with declaration.

[ 1.00000000e+00 7.84727140e-44]

因此,您看到它正在檢測不一致,但是不會使代碼崩潰。 相反,我的numpy數組在數組中得到了一個假值。 有沒有辦法從vtk取回讀取錯誤,以便我可以處理? 還是有一些程序可以解析VTK文件並在讀取之前告訴我它是否有效?

嘗試使用數據讀取器類的IsFileValidIsFileUnstructuredGrid方法。

暫無
暫無

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

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