Python 3.x 如何从vtp xml文件中读取数据

Python 3.x 如何从vtp xml文件中读取数据,python-3.x,vtk,Python 3.x,Vtk,我正在尝试使用VTKFile type=“PolyData”从.vtp文件读取数据 在标准文本编辑器中打开的.vtp文件类似于 <?xml version="1.0"?> <VTKFile type="PolyData" version="0.1" ... > <PolyData> <Piece NumberOfPoints="99686" NumberOfVerts=

我正在尝试使用VTKFile type=“PolyData”从.vtp文件读取数据

在标准文本编辑器中打开的.vtp文件类似于

<?xml version="1.0"?>
<VTKFile type="PolyData" version="0.1" ... >
<PolyData>
  <Piece NumberOfPoints="99686"  NumberOfVerts="0"   NumberOfLines="0"                                
         NumberOfStrips="0"    NumberOfPolys="199368"              >
  <PointData>
      <DataArray type="UInt8" Name="name1" format="appended" ... />
      <DataArray type="Int16" Name="name2" RangeMax="589" .../>
  </PointData>
  <CellData>
  </CellData>
  <Points>
    <DataArray type="Float32" Name="Points" NumberOfComponents="3" ... />
  </Points>
  <Verts>
我可以通过

from vtk.util.numpy_support import vtk_to_numpy

polydata = reader.GetOutput()
points = polydata.GetPoints()
array = points.GetData()
point_coordinates = vtk_to_numpy(array)
但仅当vtk==8.1.2,而不是vtk==9.x时

现在我需要获取隐藏在PointData“name1”和“name2”中的数据作为numpy数组。我可以通过

pointData = polydata.GetPointData()
但是当我尝试用vtk_将其转换为numpy时,我得到了一个错误

AttributeError: 'vtkCommonDataModelPython.vtkPointData' object has no attribute 'GetDataType'

如何访问PoxDATA数据作为NUMPY数组或PyHton列表?< /P> < P>此时,您的代码是正确的,并且数据被读取并包含在VTKPoIDEATS类型的<代码> PultDaaDeals/Cuff>变量中,请参见这里C++ C++文档(Python作为同一API,参见这里:)/P> 然后,vtk代表

可视化工具包
,因此,如果您所说的显示是指三维视图,请看这里:

对于numpy集成,您可以使用
dataset\u适配器
模块:


也可以将数据数组转换为NoMpy.<代码> vtkytotoNypy/<代码>模块(<代码>从VTK.UTI.NUPYPYORKION支持导入VTKYTotoNyPy < /C> >)/P> < P>此时您的代码是正确的,并且数据被读取并包含在VTKPoLTAdvt的 PultDaaDouuts<代码>变量中,参见这里C++ C++文档(Python作为同一API,参见这里:)/P> 然后,vtk代表
可视化工具包
,因此,如果您所说的显示是指三维视图,请看这里:

对于numpy集成,您可以使用
dataset\u适配器
模块:

您还可以使用
vtk\u to\u numpy
模块将数据数组转换为numpy(
from vtk.util.numpy\u支持将vtk\u导入到numpy

似乎做了这笔交易


似乎做了这笔交易。

您想如何处理这些数据?你的代码出了什么问题?@NicoVuaille我想以数组类型访问/查看它,现在我根本看不到它。比如numpy之类的。没有问题,因为没有错误消息,但我无法显示数据。我尝试了此操作,但找不到vtk.UTILS您想对数据做什么?你的代码出了什么问题?@NicoVuaille我想以数组类型访问/查看它,现在我根本看不到它。比如numpy之类的。没有问题,因为没有错误消息,但我无法显示数据。我试过了,但找不到vtk.utilsI。我目前只能访问vtk 8.1.2中的vtk.util,而不能访问vtk 9.x。点ID只是数组的索引,由vtk_到_numpy生成,对吗?我目前只能访问vtk 8.1.2中的vtk.util,而不能访问vtk 9.x。点ID只是数组的索引,由vtk_到_numpy生成,这对吗?
AttributeError: 'vtkCommonDataModelPython.vtkPointData' object has no attribute 'GetDataType'
name1 = pointData.GetArray('name1')
name1_array = vtk_to_numpy(name1)