PyVista&VTK Data Model

PyVista&VTK Data Model

VTKPyVista中可视化数据,需要两条信息:数据的几何图形(描述数据在空间中的位置及其值)和拓扑结构cells(描述数据集中的点如何相互连接)。

在抽象层,有vtkDataObject,它只是没有几何结构或拓扑结构的数据“点(属性数据)”。其中包含vtkFieldData的数组。在具体类层是vtkDataSet,它将几何图形和拓扑添加到vtkDataObject

与数据集中的每个点或单元关联的是一个特定值。由于这些值必须在空间中定位和连接,所以它们保存在vtkDataArray类中,该类只是堆上的内存缓冲区。在PyVista中,99%的时间我们与vtkDataSet对象交互,而不是与vtkDataObject对象交互。PyVista使用与VTK相同的数据类型,但为了便于使用,以更具Python风格的方式构造它们。

如果想了解VTK如何构造其数据的,参阅Kitware对Python中VTK的介绍,以及Kitware的GitHub站点上的大量代码示例。卡内基梅隆大学Keenan Crane教授的离散微分几何YouTube系列提供了与VTK中实现的三维建模相关的数学概念的优秀介绍。这里教授的概念将帮助更好地理解为什么数据集的结构与VTK等库中的结构相同。

在最基本的级别上,所有PyVista几何体类都继承自Data Sets类。数据集具有以点 point、单元cell或场阵列形式field arrays描述该几何体的几何体、拓扑和属性。

PyVista 中的几何体Geometry表示为点points和单元格cells。例如,PolyData中的一个单元格。

在这里插入图片描述
我们需要一种方法来描述这些点在空间中的位置,但我们仅限于像上面所做的那样表达值本身(带索引的数组列表)。VTK(以及PyVista)有多个代表不同数据形状的类。最重要的数据集类如下所示:
在这里插入图片描述
在这里,上述数据集从最复杂(5)到最不复杂(1)排序。也就是说,每个数据集都可以表示为非结构化网格UnstructuredGrid,但非结构化网格类需要存储最多的内存,因为它们必须考虑每个单独的点和单元。另一方面,由于vtkImageData(UniformGrid)的间距是均匀的,因此几个整数和浮点数可以描述形状,因此存储所需的内存量最少。

这是因为在PolyData或非结构化网格UnstructuredGrid中,必须明确定义点和单元。在其他数据类型中,例如UniformGrid,单元(甚至点)被定义为基于网格维度的属性。

Reference

  1. pyvista-data-model
  2. PyVista&VTK Data Model
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值