首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中向vtk文件(传统vtk 3.0 )添加标量

在Python中向vtk文件(传统vtk 3.0 )添加标量
EN

Stack Overflow用户
提问于 2015-02-16 03:19:24
回答 1查看 1.6K关注 0票数 2

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

我的代码的简化版本如下

代码语言:javascript
复制
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()

此时,我假设需要使用data.SetCell向数据添加一个vtkArray

问题是SetCell请求一个vtkCellArray,而我还没有设法将我的数组scalar3转换为vtkCellArray。

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

EN

回答 1

Stack Overflow用户

发布于 2015-02-20 00:15:23

实际上,您需要使用cell_data.AddArray()来添加数组。SetCell()实际上会修改数据集的拓扑。

关于使用vtk.numpy_support在vtkArrays和numpy数组之间来回转换,Rojj是正确的。您可以使用类似以下内容:

代码语言:javascript
复制
import vtk
from vtk.util import numpy_support
...
scalar3_array = numpy_support.numpy_to_vtk(scalar3)
scalar3_array.SetName('scalar3')
cell_data.AddArray(scalar3)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28530088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档