从VTK文件中读取nodes/cells/points的位置坐标

Reading the position coordinates of nodes/cells/points from VTK files

我想从 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()

  • 那么你应该使用 vtk_to_numpy :

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 论坛上的类似 post:https://discourse.vtk.org/t/how-to-print-a-list-of-vertices-location-and-ids-using-python/965