在Python中向vtk文件(vtk 3.0 legacy)添加标量

2024-09-21 01:14:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将计算的标量添加到现有的VTK文件中。在

我的代码的简化版本如下

import vtk
import os
import numpy as np

reader = vtk.vtkdatasetReader()   
reader.SetFileName(vtk_file_name)
reader.ReadAllScalarsOn()
reader.Update()
data = reader.GetOutput() #This contains all data from the VTK
cell_data = data.GetCellData() #This contains just the cells data
scalar_data1 = cell_data.GetArray('scalar1')
scalar_data2 = cell_data.GetArray('scalar2')

scalar1 = np.array([scalar_data1.GetValue(i) for i in range(data.GetNumberOfCells())])
scalar2 = np.array([scalar_data2.GetValue(i) for i in range(data.GetNumberOfCells())])

scalar3 = scalar1 - scalar2

writer = vtk.vtkDataSetWriter()

在这一点上,我假设我需要通过使用数据集单元格在

问题是SetCell要求vtkCellArray,而我还没有成功地将数组scalar3转换为vtkCellArray。在

这是正确的方法吗?有什么建议吗?在


Tags: theimportdatanpcellthisreaderscalar
1条回答
网友
1楼 · 发布于 2024-09-21 01:14:09

你真的需要用手机_数据.AddArray()以添加阵列。SetCell()实际上会修改数据集的拓扑结构。在

Rojj关于使用vtk.numpy_支持在vtkarray和numpy数组之间来回转换。您可以使用如下方法:

import vtk
from vtk.util import numpy_support
...
scalar3_array = numpy_support.numpy_to_vtk(scalar3)
scalar3_array.SetName('scalar3')
cell_data.AddArray(scalar3)

相关问题 更多 >

    热门问题