我想从VTK文件(非结构化网格-XML格式)中读取点的空间坐标。我正在使用python(V 2.7),这是我正在使用的代码的小版本。
import vtk
import numpy
from vtk.util.numpy_support import vtk_to_numpy
reader = vtk.vtkXMLUnstructuredGridReader()
reader.SetFileName( "MyFile.vtu" )
reader.Update()
field_array = reader.GetOutput().GetPointData().GetArray( "MyField" )
# this part will give the values of the "Field" in all points as an array
Point_cordinates = reader.GetOutput().GetPoints.GetData()
# this is not working
我想要的是将所有点的X,Y,Z坐标列为数组。我查看了文档,找不到此文件。
因此,我找到了可用于此目的的名为meshio
的第三方工具
您可以通过以下方式安装
pip install meshio --user
我们可以如下使用它
import meshio
point_cordinates = meshio.read("YourFileName").points
# this will return a Nx3 array of xyz cordinates
ps:我仍在寻找使用默认vVTK库执行此操作的方法。
两点:
Point_cordinates = reader.GetOutput().GetPoints().GetData()
numpy_coordinates = numpy_support.vtk_to_numpy(Point_cordinates)
在此处查看代码:https://gitlab.kitware.com/vtk/vtk/blob/master/Wrapping/Python/vtkmodules/util/numpy_support.py
以及VTK论坛上的类似帖子:https://discourse.vtk.org/t/how-to-print-a-list-of-vertices-location-and-ids-using-python/965