在Python中使用paraview过滤器,Paraview python api

问题描述

我一直在使用 Paraview 来可视化和分析 VTU 文件。我发现计算梯度过滤器非常有用。我想知道是否有适用于 Paraview 的 Python API,我可以使用它来使用此过滤器。

我正在寻找这样的东西。

import paraview as pv

MyFile = "Myfile0001.vtu"

divergence = pv.filters.GradientOfUnstructuredDataset.(Myfile)

解决方法

ParaView 完全是 scriptable in python。本文档的每个部分都有一个“在 python 中执行”版本。

虽然 API 文档不一定存在,但您可以使用 Python Trace(在工具菜单中),它记录来自 GUI 的操作并将其保存为 Python 脚本。

编辑

要以数组形式取回数据,需要一些额外的步骤,因为 ParaView 在客户端/服务器模式下工作。您应该 Fetch 数据,然后您可以操作 vtkObject,提取数组并将其转换为 numpy。

类似的东西

from paraview.simple import *
from vtk.numpy_interface import dataset_adapter as dsa

gridvtu = XMLUnstructuredGridReader(registrationName='grid',FileName=['grid.vtu'])
gradient = GradientOfUnstructuredDataSet(registrationName='Gradient',Input=gridvtu)
vtk_grid = servermanager.Fetch(gradient)
wraped_grid = dsa.WrapObject(vtk_grid)
divergence_array = wraped_grid.PointData["Divergence"]

注意 divergence_array 是一个 numpy.ndarray

您也可以编写纯 vtk 代码,如 this example on SO