从VTK文件读取节点/单元/点的位置坐标

时间:2019-11-05 14:27:09

标签: python vtk paraview

我想从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坐标列为数组。 我查看了文档,找不到此文件。

2 个答案:

答案 0 :(得分:1)

两点:

    最后一行缺少
  • 括号。应该是

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

答案 1 :(得分:0)

因此,我发现了名为meshio的第三方工具,可以用于此目的

您可以通过以下方式安装它

pip install meshio --user

我们可以如下使用

import meshio
point_cordinates = meshio.read("YourFileName").points
# this will return a Nx3 array of xyz cordinates

ps:我仍在寻找使用默认vVTK库执行此操作的方法。