在 Python 中保存 VTK 中的数据数组

2024-03-22

Question:

如何从 Python 中的 VTK 中提取数据集数组并将其保存在新文件中?e.g.对于具有幅度数据集的 VTKforce, 移位 and current仅提取移位并将其保存在较小的文件中。

Problem:

我在远程服务器上有数百个 4GB VTK 文件,我想提取为不同量级生成的几个数据集之一。在这些数据集中,我有标量和向量。

我编写了以下 VTK Python 代码,在其中读取非结构化网格,并获取第二个数据数组,以便稍后使用“vtkArrayWriter”保存它。

import vtk
Filename = 'file.vtk'
reader = vtk.vtkUnstructuredGridReader()
reader.SetFileName(Filename)
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
reader.Update()
obj = reader.GetOutput().GetPointData().GetArray(1)
writer = vtk.vtkArrayWriter()
writer.SetInputData(obj)
writer.SetFileName('test.vtk')
writer.Update()

该代码给我以下输出:

类型错误:SetInputData 参数 1:方法需要一个 vtkDataObject、一个 提供了 vtkFloatArray。

我没有设法将“vtkFloatArray”转换为“vtkDataObject”或找到支持“vtkFloatArray”作为输入的特定方法。我没有找到很多相关代码,但可能是我用谷歌搜索了错误的关键字。此时我陷入了困境。

Note:

这与通过在 Paraview 中应用过滤器“PassArays”然后保存可以实现的过程相同,但是考虑到我的问题的大小和特征,这不是一个可行的解决方案。


VTK 有一个vtkPassArrays过滤器的文档是here https://www.vtk.org/doc/nightly/html/classvtkPassArrays.html#details。您需要知道输出文件中所需的数组的名称以及该数组是否是点​​/单元/场数据。

import vtk as v
Filename = 'file.vtk'
reader = v.vtkUnstructuredGridReader()
reader.SetFileName(Filename)
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
pa = v.vtkPassArrays()
pa.SetInputConnection(reader.GetOutputPort())
pa.AddArray( 0, 'Array1Name' ) # 0 for PointData, 1 for CellData, 2 for FieldData
writer = v.vtkDataSetWriter()
writer.SetFileName('test.vtk')
writer.SetInputConnection(pa.GetOutputPort())
writer.Update()
writer.Write()

输出文件test.vtk将包含所有点和单元格,但仅包含您指定的数组名称。如果您只需要数组而不需要点或单元格,则可以使用以下解决方案VTK NumPy 集成 https://blog.kitware.com/improved-vtk-numpy-integration and numpy.savetxt https://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html.

import numpy as np
import vtk as v
from vtk.numpy_interface import dataset_adapter as dsa
reader = v.vtkUnstructuredGridReader()
reader.SetFileName(Filename)
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
reader.Update()
usg = dsa.WrapDataObject( reader.GetOutput() )
array1 = usg.PointData['Array1Name'] # Assuming you know the name of the array
# array1 is a child class type of numpy.ndarray type
np.savetxt('array1.dat', array1, fmt='%4.5f' )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中保存 VTK 中的数据数组 的相关文章

随机推荐

  • C# 从 OpenXML 返回内存流,导致损坏的 Word 文件

    我对来自 OpenXML 的 MemoryStream 有疑问 如果我在一个方法中完成所有步骤 我可以成功打开 Word 文件 更改它并通过 HttpResponse 下载它 但是 如果我尝试通过返回 MemoryStream 在两个不同的
  • 如何使用Android自动填充API

    我已经使用 android webview 组件构建了一个小型浏览器 并且希望使用 Android AutoFill API 集成密码 凭据管理器支持 我已阅读文档 但完全迷失了方向 找不到任何与 webviews 等复杂事物集成的示例 这
  • 嵌套 TagBuilder -作为 TagBuilderTree-

    TagBuilder 是构建 HTML 元素的一个很好的实现 但是某些 HTML 元素可以有其他元素 我称之为 子元素 我无法从 Mvc 类中找到任何类 问题 我应该实现几个支持嵌套标签的类 TagBuilderTree 和 TagBuil
  • 在 Visual Studio C++ 项目中在哪里输入 DLL 依赖项?

    我正在将一些在 Linux 和 Mac 上运行的 Qt 项目文件 pro 转换为 Visual Studio 项目文件 vcproj Qt Visual Studio 加载项可以很好地转换除 DLL 依赖项之外的所有内容 我应该将它们放在
  • 关于变量/函数命名约定的思考

    我一生都在断断续续地编码 我主要编写 Perl 代码 但也编写一些 Java PHP C C 我什至尝试过 Emacs Lisp 并且偶尔也编写过 shell 脚本 然而 我从来没有真正参与这个主题来获得任何专业知识 其他事情对我来说有更高
  • Android 从 java 代码设置文本视图颜色

    我有一个列表 并为此编写了一个自定义适配器 我想为此设置一些文本颜色 例如橙色代码 F06D2F 我正在展示我的代码片段getView method TextView text new TextView this context text
  • 获取单元测试时引用项目的路径

    我正在尝试使用单元测试来测试我的 ASP Net Web 应用程序中的类的功能 此类从硬盘驱动器加载一些文件 以执行 xsl 转换 Xsl GetXSLFromFile AppDomain CurrentDomain BaseDirecto
  • 如何在 Java 中解析 EDIFACT? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 解析 EDIFACT 可能是一项艰巨的任务 如何从 EDIFACT 文件正确创建语法和语义正确的树 ww
  • for 循环的增长顺序复杂

    对于以下代码片段 N 的增长顺序是多少 int sum 0 for int i 1 i lt N i i 2 for int j 1 j lt N j j 2 for int k 1 k lt i k sum 我发现有 lgN 项 但我一直
  • 什么是过度获取或不足获取?

    我有时会玩 graphQL 在 graphQL 之前 我们通常使用 REST API 许多开发者表示 graphQL 修复了 REST 的一些问题 例如过度获取和不足获取 我对这个术语感到困惑 有人可以解释一下在这种情况下什么是过度获取和不
  • 如何不经过身份验证直接向 SMTP 服务器发送邮件?

    我想通过直接连接到将电子邮件直接从脚本发送到 Gmail 电子邮件帐户smtp gmail com 但是 我不希望脚本中包含 gmail 密码 据我所知 Gmail 似乎需要身份验证才能发送任何邮件 包括发送给自己的用户 我的问题是 来自另
  • TFS 远程用户... SSL + 密码还是 VPN?

    我目前的任务是为客户端设置 TFS 服务器 TFS将主要由本地 现场 用户通过内部网络访问 简单 但是我们拥有的少数远程用户怎么办 他们应该通过 VPN 连接还是最好将 TFS 服务器公开并让用户通过 SSL 连接并向 TFS 提供用户名和
  • 使用 TWIG Markdown 转义 HTML 代码

    我正在开发一个博客评论包 我想让用户使用 Markdown 发布一些代码 我正在使用 symfony2 TWIG 和KNP Markdown 捆绑包 https github com KnpLabs KnpMarkdownBundle用于解
  • 在 TypeScript 项目中使用 Path2D 未解决

    我想用新的Path2D https developer mozilla org en US docs Web API Path2D Path2Dapi 在 TypeScript 项目中 但我在 lib es6 d ts 中没有看到它 使用它
  • 还有其他方法可以调整 Blockly 工作区的大小吗?

    我正在努力适应我的Blockly workspace在 div 内 我希望如果页面变小 div 和Blockly workspace它的内部也会更小 我知道有一种方法可以Google在其规定的文档 https developers goog
  • 如何解析 ISO8601 日期 [重复]

    这个问题在这里已经有答案了 我得到了关于这种格式的日期字符串 2011 12 29T09 09 06 0500 如何将其转换为日期对象 尝试这个解决方案 NSString dateString 2011 12 29T09 09 06 050
  • 坐标三角学 - 计算飞行路径弧线的中点

    我正在尝试使用 SVG 在地图上绘制飞行路径 我在 Leaflet 之上使用 d3 但所使用的框架不应该对我的问题产生影响 这是三角函数 http fiddle jshell net zw8TR 26 http fiddle jshell
  • 在没有 Socket.io 的 Backbone.js 应用程序中使用 websockets

    我是 Backbone 的新手 我正在尝试构建一个 Backbone 应用程序来实时绘制和映射数据 我实现了一个 websocket 以下this https github com andrewvc d3 backbone presenta
  • 我可以在 Sql Server 中对一组数字执行按位与运算吗?

    我有一个安全表 其中包含组和用户的列表 每个组和用户都有按位整数权限 对于每个给定的用户 我想对其所有组及其个人权限记录 如果存在 执行按位 AND 操作 当然 我可以轻松地在代码中执行此操作 但我宁愿在数据库中执行此操作 因为我正在查询权
  • 在 Python 中保存 VTK 中的数据数组

    Question 如何从 Python 中的 VTK 中提取数据集数组并将其保存在新文件中 e g 对于具有幅度数据集的 VTKforce 移位 and current仅提取移位并将其保存在较小的文件中 Problem 我在远程服务器上有数