【翻译】VTK官方文档 - vtk文件格式

VTK文件格式包括传统简单格式和基于XML的格式,用于数据一致性表示和跨软件通信。传统格式包含五个部分,而XML格式支持更多功能,如随机访问和并行I/O。建议使用XML格式,因其具有更好的灵活性和可移植性。
本文翻译自vtk官方文档: vtk_file_format
文末有链接

VTK提供了许多源对象和编写器对象,用于读取和写入流行的数据文件格式,此外,VTK也提供了自己的文件格式。创建一种数据文件格式的主要原因是为各种数据集类型提供一致的数据表示方案,并提供一种在软件之间通信数据的简单方法。只要有可能,我们建议您使用更广泛的格式,但如果这不可能,则可以改用本文介绍的格式。请注意,这些格式可能不会得到许多其他工具的支持。

VTK中有两种不同样式的文件格式。 最简单的是传统的串行格式,可以通过手工或程序轻松读取和写入,但是,这些格式的灵活性不如本节稍后介绍的基于XML的文件格式。 XML格式支持随机访问,并行I / O和可移植数据压缩,在可能的情况下,优先考虑此格式。

传统简单格式

传统VTK文件格式包含五个基本部分:

1. 第一部分是文件版本和标识符。 这部分包含单行# vtk DataFile Version x.x ,该行必须与显示的完全相同,但版本号x.x除外,该版本号会因VTK的不同发行版而变化。(注意:当前版本是3.0。版本1.0和2.0文件与版本3.0是兼容的)

2. 第二部分是标题。标题由以行尾字符\n终止的字符串组成。最大为256个字符,可用于描述数据并包括任何其他相关信息。

3. 下一部分是文件格式。文件格式描述文件的类型,可以是ASCII或二进制。 在此行上,必须出现单个单词ASCIIBINARY

4. 第四部分是数据集结构。几何部分描述了数据集的几何和拓扑。这部分以包含关键字DATASET的行开头,后跟描述数据集类型的关键字。然后,根据数据集的类型,其他关键字/数据组合将定义实际数据。

5. 最后一部分描述了数据集属性。 这部分以关键字POINT_DATACELL_DATA开头,后跟一个整数,分别指定点或单元的数量。(先出现POINT_DATA还是CELL_DATA都没关系)。然后,其他关键字/数据组合定义实际的数据集属性值(即标量,向量,张量,法线,纹理坐标或字段数据)。

文件格式的概述如图1所示。前三个部分是必需的,而另两个部分是可选的。因此,您可以通过操作系统文件或使用VTK过滤器合并数据,灵活地混合与匹配几何、数据集属性。关键字不区分大小写,可以用空格分隔。

d0ea4eaaa1f776a4bec3c5fa2c13660b.jpeg
图1 VTK数据文件格式的五个部分的概述

在描述数据文件格式之前,请注意以下几点。

  • dataTypebit,unsigned_char,char,unsigned_short,short,unsigned_int,int,unsigned_long,long,floatdouble的类型之一。这些关键字用于描述数据的形式,既可以从文件中读取,也可以构造适当的内部对象。并非所有类都支持所有数据类型。
  • 无论文件是二进制文件还是ASCII文件,所有关键字词组均以ASCII形式编写。
  • 文件的二进制部分(如果是二进制形式)是适当的数据;即定义点坐标,标量,像元索引等的数字。
  • 索引为0偏移。因此,第一个点是点ID为0。
  • 如果文件中同时存在数据属性和几何/拓扑部分,则数据属性部分中定义的数据值的数量必须与几何/拓扑部分中定义的点或单元的数量完全匹配。
  • 单元格类型和索引的类型为int。
  • 二进制数据必须立即放在上一个ASCII关键字和参数序列中的“换行符”(\ n)字符之后。
  • 几何/拓扑描述必须先于数据属性描述。

二进制文件

只要遵守两个条件,VTK中的二进制文件即可在不同的计算机系统之间移植。首先,确保数据的字节顺序正确,其次,确保每种数据类型的长度一致。

大多数时候,VTK会为您管理二进制文件的字节顺序。当您在一台计算机上写入二进制文件并从另一台计算机读取该文件时,表示数据的字节将根据需要自动交换。例如,在Sun上写入的二进制文件以大字节序存储,而在PC上的二进制文件则以小字节序存储。因此,在PC上读取时,写在Sun工作站上的文件需要字节交换。(有关实现的详细信息,请参见类vtkByteSwap)此处描述的VTK数据文件以大端格式书写。

但是,某些文件格式未明确定义字节顺序形式。您会发现由外部程序或类vtkVolume16ReadervtkMCubesReadervtkMCubesWriter读取或写入的数据可能具有不同的字节顺序,具体取决于原始系统。在这种情况下,VTK允许您使用方法指定字节顺序:

SetDataByteOrderToBigEndian()
SetDataByteOrderToLittleEndian()

二进制文件的另一个问题是系统可能使用不同数量的字节来表示整数或其他本机类型。例如,某些64位系统将表示一个8字节的整数,而另一些系统将表示一个4字节的整数。当前,VTK无法处

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值