目录

1.VTK(Visualization ToolKit) files

2.VTK file Format

2.1Simple Legacy Format简单传统格式

Binary Files

Dataset Format

Dataset Attribute Format.

Examples

2.2XML File Format

2.2.1Serial XML File Formats.

2.2.2Parallel File Formats.

3.PVD File Format



https://www.paraview.org/Wiki/ParaView/Data_formats

1.VTK(Visualization ToolKit) files

VTK文件格式及其所有相关文件是ParaView的首选格式。这些文件格式相当复杂,但也非常强大。VTK文件格式文档URL:https://lorensen.github.io/VTKExamples/site/VTKFileFormats/.  The original .pdf document:https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf

2.VTK file Format

Visualization Toolkit提供了许多源对象和写入对象来读取和写入的流行数据文件格式。

可视化工具箱VTK还提供了一些自己的文件格式。创建自己的数据文件格式,主要原因是为各种数据集类型提供一致的数据表示方案,并提供在软件之间进行简单的数据通信方法。只要可能,我们建议您使用更广泛使用的格式。但是,如果这是不可能的,那么可以使用这个vtk格式。请注意,许多其他工具可能不支持这些格式。

VTK中有两种不同的文件格式。最简单的是传统的串行格式,这些格式易于手动或编程读写。但是,这些格式不如本节后面介绍的基于XML的文件格式灵活。XML格式支持随机存取、并行I/O和便携式数据压缩,尽可能优先于串行VTK文件格式。

2.1Simple Legacy Format简单传统格式

传统的VTK文件格式由五个基本部分组成。

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

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

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

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

5.最后一部分描述了数据集属性。此部分以关键字POINT_DATA或CELL_DATA开始,后跟一个整数,分别指定点或单元格的数量(POINT_DATA或CELL_DATA谁在前,无所谓)。其他关键字/数据(keyword/data)组合然后定义实际的数据集属性值(即,标量scalars、向量vectors、张量tensors、法线normals、纹理坐标texture coordinates或字段数据field data)。

文件格式的概述如图1所示。前三部分是必需的,但其他两部分是可选的。

因此,您可以通过操作系统文件操作或使用VTK过滤器合并数据,灵活地混合和匹配数据集属性和几何体。关键字不区分大小写,可以用空格分隔。

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

  • dataType is one of the types bit, unsigned_char, char, unsigned_short, short, unsigned_int, int, unsigned_long, long, float, or double. 这些关键字用于描述数据的形式,既用于从文件中读取数据,也用于构造适当的内部对象。并非所有类都支持所有数据类型。
  • 无论文件是二进制还是ASCII,所有关键字短语都以ASCII格式编写。文件的二进制部分(如果是二进制形式)是正确的数据; 例如,定义点坐标、标量、单元索引等的数字。
  • 指数为0-offset。因此,第一个point是point id 0。

  • 如果文件中同时存在数据属性和几何/拓扑部分,则数据属性部分中定义的数据值数量必须与几何/拓扑部分中定义的点或单元数量完全匹配。

  • 单元格类型cell type和索引indices 类型为int型。

  • 二进制数据必须放在文件中,紧跟在前一个ASCII关键字和参数序列的“换行符”(\n)字符之后。

  • 几何/拓扑描述必须出现在数据属性描述之前

Binary Files

只要遵守两个条件,VTK中的二进制文件就可以跨不同的计算机系统移植。

首先,确保数据的字节顺序正确,其次,确保每个数据类型的长度一致。

Dataset Format

可视化工具箱支持五种不同的数据集格式:结构化点structured points、结构化网格structured grid、直线网格 rectilinear grid、非结构化网格unstructured grid和多边形数据polygonal data。具有隐式拓扑的数据(结构化数据,如vtkImageData和vtkStructuredGrid)的顺序是x增长最快,然后是y,然后是z。这些格式如下:

Unstuctured Grid

非结构化网格数据集由任何可能的单元类型的任意组合组成。

非结构化网格由点points、单元cells和单元类型cell types定义。

CELLS关键字需要两个参数:单元格数n和单元格列表大小cell list size。cell list size是表示列表所需整数值的总数(即每个单元格上的numPoints和connectively indices over each cell的总和)。

CELL_TYPES关键字需要一个参数:单元格数n。此值应与CELLS关键字指定的值匹配。

单元格类型cell types数据是指定单元格类型的每个单元格的一个整数值(请参见vtkCell.h或图2)

DATASET UNSTRUCTURED_GRID
POINTS n dataType
p0x p0y p0z
p1x p1y p1z
...
p(n-1)x p(n-1)y p(n-1)z
CELLS n size
numPoints0, i, j, k, l, ...
numPoints1, i, j, k, l, ...
numPoints2, i, j, k, l, ...
...
numPointsn-1, i, j, k, l, ...CELL_TYPES n
type0
type1
type2
...
typen-1

Dataset Attribute Format.

可视化工具箱支持以下数据集属性:标量scalars(一到四个组件)、向量vectors、法线normals、纹理坐标texture corrdinates(1D、2D和3D)、张量tensors和场数据field data。此外,还可以定义与标量数据相关联的使用RGBA颜色规范的查找表。点points和单元格cells都支持数据集属性。

每种类型的属性数据都有一个与之关联的dataName,这是用于标识特定数据的字符串。VTK读取器使用dataName来提取数据。因此,一个文件中可以包含多个相同类型的属性数据。

例如,在数据集点上定义的两个不同标量字段“压力”和“温度”可以包含在同一个文件中。(如果未在VTK读取器中指定适当的数据名,则从文件中提取该类型的第一个数据。)

scalars标量

标量定义包括查找表的规范。查找表的定义是可选的。如果未指定,将使用默认的VTK表(tableName应为“default”)。

另外请注意,numComp变量是可选的,默认情况下,组件数等于一。(参数numComp的范围必须介于(1,4)之间;在vtk2.3之前的VTK版本中,不支持此参数。)

SCALARS dataName dataType numComp
LOOKUP_TABLE tableName
s0
s1
...
sn-1

颜色标量的定义(即,直接映射到颜色的无符号字符值)根据每个标量的值(nvalue)的数量而变化。

如果文件格式是ASCII,则颜色标量是使用nValues float值在(0,1)之间定义的。

如果文件格式为二进制,则数据流由nValues每个标量值的无符号char值组成。

COLOR_SCALARS dataName nValues
c00 c01 ... c0(nValues-1)
c10 c11 ... c1(nValues-1)
...
c(n-1)0 c(n-1)1 ... c(n-1)(nValues-1)

Lookup Table

tableName字段是用于标识查找表的字符串(没有嵌入空格)。VTK读取器使用此标签来提取特定表。查找表中的每个条目都是一个rgba[4](红-绿-蓝-alpha)数组(alpha是不透明的,其中alpha=0是透明的)。

如果文件格式是ASCII,则颜色标量是使用nValues float值在(0,1)之间定义的。

如果文件格式为二进制,则数据流由nValues每个标量值的无符号char值组成。

LOOKUP_TABLE tableName size
r0 g0 b0 a0
r1 g1 b1 a1
...
rsize-1 gsize-1 bsize-1 asize-1

 Vectors

VECTORS dataName dataType
v0x v0y v0z
v1x v1y v1z
...
v(n-1)x v(n-1)y v(n-1)z

Examples

例3

第三个例子是一个非结构化网格,包含19种VTK单元cell类型中的12种(参见图2和图3)。该文件包含标量和矢量数据。

# vtk DataFile Version 2.0
Unstructured Grid Example
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 27 float
0 0 0  1 0 0  2 0 0  0 1 0  1 1 0  2 1 0
0 0 1  1 0 1  2 0 1  0 1 1  1 1 1  2 1 1
0 1 2  1 1 2  2 1 2  0 1 3  1 1 3  2 1 3
0 1 4  1 1 4  2 1 4  0 1 5  1 1 5  2 1 5
0 1 6  1 1 6  2 1 6CELLS 11 60
8 0 1 4 3 6 7 10 9
8 1 2 5 4 7 8 11 10
4 6 10 9 12
4 5 11 10 14
6 15 16 17 14 13 12
6 18 15 19 16 20 17
4 22 23 20 19
3 21 22 18
3 22 19 18
2 26 25
1 24CELL_TYPES 11
12
12
10
10
7
6
9
5
5
3
1POINT_DATA 27
SCALARS scalars float 1
LOOKUP_TABLE default
0.0 1.0 2.0 3.0 4.0 5.0
6.0 7.0 8.0 9.0 10.0 11.0
12.0 13.0 14.0 15.0 16.0 17.0
18.0 19.0 20.0 21.0 22.0 23.0
24.0 25.0 26.0
VECTORS vectors float
1 0 0  1 1 0  0 2 0  1 0 0  1 1 0  0 2 0
1 0 0  1 1 0  0 2 0  1 0 0  1 1 0  0 2 0
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1

例子3在paraview显示效果如下:

2.2XML File Format

VTK使用XML语法提供了另一组数据格式。虽然这些格式比前面描述的原始VTK格式复杂得多(请参见2.1的“简单传统格式”),但它们支持更多的功能。

其开发的主要动机是促进数据流和并行I/O。

该格式的一些特性包括支持压缩、可移植二进制编码、随机存取、大端字节顺序和小端字节顺序、工件数据的多文件表示以及针对不同VTK数据集类型的新文件扩展名。

XML还提供了许多特性,特别是使用特定于应用程序的标记扩展文件格式的能力。

vtkxml数据文件有两种类型:并行和串行,如下所述:

•串行,文件类型设计为只由单个进程的应用程序读写。所有数据都包含在一个文件中。

•并行,为多进程并行执行的应用程序读写而设计的文件类型。数据集被分解成多个部分。每个进程分配一个或一组要读或写的片段。单个工件存储在相应的串行文件类型中。并行文件类型实际上不包含任何数据,而是描述结构信息,然后引用包含每个工件数据的其他串行文件。

在XML格式中,VTK数据集分为两类:

  • 结构化的。数据集是一个拓扑规则的单元数组,如像素和体素(如图像数据)或四边形和六面体(如结构化网格)(有关详细信息,请参阅第19页的“可视化模型”)。数据的矩形子集通过范围extents来描述。结构化数据集类型是vtkImageData,vtkRectilinearGrid和vtkStructuredGrid。
  • 非结构化。数据集形成了一组拓扑上不规则的点和单元。描述了数据的子集使用索引pieces。非结构化数据集类型为vtkPolyData和vtkUnstructuredGrid(有关详细信息,请参阅第19页的“可视化模型”)。

按照惯例,每个数据类型和文件类型都与特定的文件扩展名配对。类型和相应的扩展如下:

• ImageData (.vti) — Serial vtkImageData (structured). 图像数据,串行结构化
• PolyData (.vtp) — Serial vtkPolyData (unstructured). 多边形数据,串行非结构化
• RectilinearGrid (.vtr) — Serial vtkRectilinearGrid (structured). 直线网格,串行结构化
• StructuredGrid (.vts) — Serial vtkStructuredGrid (structured). 结构化网格,串行结构化
• UnstructuredGrid (.vtu) — Serial vtkUnstructuredGrid (unstructured).非结构化网格,串行非结构化
• PImageData (.pvti) — Parallel vtkImageData (structured). 并行结构化
• PPolyData (.pvtp) — Parallel vtkPolyData (unstructured). 并行非结构化
• PRectilinearGrid (.pvtr) — Parallel vtkRectilinearGrid (structured).并行结构化
• PStructuredGrid (.pvts) — Parallel vtkStructuredGrid (structured).并行结构化
• PUnstructuredGrid (.pvtu) — Parallel vtkUnstructuredGrid (unstructured)并行非结构化网格

所有VTK XML文件类型都是有效的XML文档。*文档级元素是VTKFile

<VTKFile type=”ImageData” version=”0.1” byte_order=”LittleEndian”>
...
</VTKFile>

VTKFile的属性包括:

type-文件的类型(上一个列表中带项目符号的项)。。

version-以“major.minor”格式的文件版本号。

byte_order—存储数据的机器字节顺序。这不是“BigEndian”就是“LittleEndian”。

compressor-文件中的某些数据可能被压缩。这指定vtkDataCompressor的子类,用于压缩数据。

嵌套在VTKFile元素中的是对应于数据格式的类型元素(例如type属性)。这个元素描述数据集的拓扑结构,对于串行和并行格式是不同的,下文将会描述。

2.2.1Serial XML File Formats.

VTKFile元素包含一个元素,其名称与文件描述的数据集类型相对应。我们将其称为dataset元素,它是ImageData、rectilinegrid、StructuredGrid、PolyData或UnstructuredGrid之一。

dataset元素包含一个或多个Piece元素,每个Piece元素描述数据集的一部分。dataset元素和Piece元素一起指定整个数据集。

数据集的每个部分必须指定该部分的几何图形(点和单元)以及与每个点或单元关联的数据。对于每个数据集类型,几何体的指定方式不同,但每个数据集的每个片段都包含PointData和CellData元素,用于指定片段中每个点和单元格的数据。

每个串行数据集格式的一般结构如下:

ImageData

每个ImageData片段Piece在数据集的整个范围WholeExtent内指定其范围。通过范围Extent、原点Origin和间距Spacing隐式地描述点Points和单元Cells。注意,所有片段Piece的原点Origin和间距Spacing都是恒定的,因此它们被指定为imagedata xml元素的属性,如下所示。

<VTKFile type=”ImageData” ...><ImageData WholeExtent=”x1 x2 y1 y2 z1 z2”Origin=”x0 y0 z0” Spacing=”dx dy dz”><Piece Extent=”x1 x2 y1 y2 z1 z2”><PointData>...</PointData><CellData>...</CellData></Piece></ImageData>
</VTKFile>

*有一种情况是文件不是有效的XML文档。如果AppendedData部分未编码为base64,则会出现可能违反XML规范的原始二进制数据。这不是默认行为,必须由用户显式启用。 

RectilinearGrid

每个矩形网格RectilinearGrid片段piece指定其在数据集的整个范围内的范围。这个

点points由坐标元素<Coordinates>描述。单元cells由范围extent隐式描述。

<VTKFile type=”RectilinearGrid” ...><RectilinearGrid WholeExtent=”x1 x2 y1 y2 z1 z2”><Piece Extent=”x1 x2 y1 y2 z1 z2”><PointData>...</PointData><CellData>...</CellData><Coordinates>...</Coordinates></Piece></RectilinearGrid>
</VTKFile>

StructuredGrid 

每个结构网格StructuredGrid片段piece指定其在数据集的整个范围内的范围。这个

点points由坐标元素<Points>描述。单元cells由范围extent隐式描述。

<VTKFile type=”StructuredGrid” ...><StructuredGrid WholeExtent=”x1 x2 y1 y2 z1 z2”><Piece Extent=”x1 x2 y1 y2 z1 z2”><PointData>...</PointData><CellData>...</CellData><Points>...</Points></Piece></StructuredGrid>
</VTKFile>

 PolyData

每个PolyData片段Piece指定一组独立于其他片段的点points和单元cells。

点points由<Points>元素显式描述。

单元cells由顶点<Verts>、直线<Lines>、条带<Strips>和多边形<Polys>元素明确描述。

<VTKFile type=”PolyData” ...><PolyData><Piece NumberOfPoints=”#” NumberOfVerts=”#” NumberOfLines=”#”NumberOfStrips=”#” NumberOfPolys=”#”><PointData>...</PointData><CellData>...</CellData><Points>...</Points><Verts>...</Verts><Lines>...</Lines><Strips>...</Strips><Polys>...</Polys></Piece></PolyData>
</VTKFile>

UnstructuredGrid 

每个UnstructuredGrid片段Piece指定一组独立于其他片段的点points和单元cells。

点points由<Points>元素显式描述。

单元cells由<Cells>元素明确描述。

<VTKFile type=”UnstructuredGrid” ...><UnstructuredGrid><Piece NumberOfPoints=”#” NumberOfCells=”#”><PointData>...</PointData><CellData>...</CellData><Points>...</Points><Cells>...</Cells></Piece></UnstructuredGrid>
</VTKFile>

PointData和CellData

每个数据集都用PointData和CellData XML元素描述与其点和单元格关联的数据

<PointData Scalars=”Temperature” Vectors=”Velocity”><DataArray Name=”Velocity” .../><DataArray Name=”Temperature” .../><DataArray Name=”Pressure” .../>
</PointData>

VTK允许任意数量的数据数组与数据集的点和单元格相关联。每个数据数组由一个DataArray元素描述,该元素给每个数组一个名称。PointData和CellData的以下属性用于按名称指定活动数组:

Scalars — The name of the active scalars array, if any.   活动标量数组的名称(如果有)。

Vectors — The name of the active vectors array, if any.   活动向量数组的名称(如果有)。

Normals — The name of the active normals array, if any.  活动法线数组的名称(如果有)。

Tensors — The name of the active tensors array, if any.   活动张量数组的名称(如果有)。

TCoords — The name of the active texture coordinates array, if any.  -活动纹理坐标数组的名称(如果有)。

一些数据集使用以下公共元素的不同组合来描述它们的点和单元格:

Points

Points元素分别为每个点显式定义坐标。它包含一个DataArray元素,描述一个数组,每个值有三个组件,每个组件指定一个点的坐标

<Points><DataArray NumberOfComponents=”3” .../>
</Points>

Coordinates 

Coordinates元素通过为范围中的每个整数值指定沿每个轴的坐标,来定义点坐标的范围。

它包含三个数据数组元素<DataArray>,分别描述沿x-y-z轴的坐标。

<Coordinates><DataArray .../><DataArray .../><DataArray .../>
</Coordinates>

Verts, Lines, Strips, and Polys 

顶点Verts、直线Lines、条带Strips和多边形Polys元素通过指定点连接明确定义单元cells。

单元类型由指定它们的元素的类型隐式地知道。每个元素包含两个DataArray元素。第一个数组指定点连接。

所有单元格的点列表都连接在一起。第二个数组为每个单元格的结尾指定连接数组中的偏移量。

<Verts><DataArray type=”Int32” Name=”connectivity” .../><DataArray type=”Int32” Name=”offsets” .../>
</Verts>

Cells 

Cells元素通过指定点连接和单元类型来显式定义单元。

它包含三个DataArray元素。第一个数组指定点连接。所有单元格的点列表都连接在一起。第二个数组为每个单元格的结尾指定连接数组中的偏移量。第三个数组指定每个单元的类型(注:单元格类型如图2和图3所示)

<Cells><DataArray type=”Int32” Name=”connectivity” .../><DataArray type=”Int32” Name=”offsets” .../><DataArray type=”UInt8” Name=”types” .../>
</Cells>

所有的数据和几何规范都使用<DataArray>元素来描述它们的实际内容,如下所示:

DataArray

DataArray元素存储一种类型的值序列。每个值可能有一个或多个组件

<DataArray type=”Float32” Name=”vectors” NumberOfComponents=”3”format=”appended” offset=”0”/>
<DataArray type=”Float32” Name=”scalars” format=”binary”>bAAAAAAAAAAAAIA/AAAAQAAAQEAAAIBA... </DataArray>
<DataArray type=”Int32” Name=”offsets” format=”ascii”>10 20 30 ... </DataArray>

DataArray元素的属性描述如下

type—数组的单个组件的数据类型。这是Int8、UInt8、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float32、Float64之一。注意:只有启用VTK_USE_64BIT_IDS(一个CMake变量——请参见“CMake”的第8页)或平台为64位时,才支持64位整数类型。

Name—数组的名称。这通常是对存储在数组中数据的简要描述。

NumberOfComponents—数组中每个值的组件数。

format—数据值本身存储在文件中的方式。这是“ascii”、“binary”或“appended”。

offset—如果格式属性为“appended”,则指定从追加数据节的开头到该数组数据的开头的偏移量。

format属性从三种存储数据值的方式中进行选择:

format=“ascii”-数据直接在DataArray元素中以ascii格式列出。空格用于分隔。

format=“binary”-数据以base64编码,并在DataArray元素中连续列出。数据也可以在用base64编码之前进行压缩。数据的字节顺序与VTKFile元素的byte_order属性指定的字节顺序匹配。

format=“added”-数据存储在“appended data”部分。由于许多DataArray元素可能将其数据存储在此节中,因此offset属性用于指定每个DataArray的数据从何处开始。

此格式是VTK编写器使用的默认格式。

追加的数据节存储在一个AppendedData元素中,该元素嵌套在dataset元素之后的VTKFile中:

<VTKFile ...>...<AppendedData encoding=”base64”>_QMwEAAAAAAAAA...</AppendedData>
</VTKFile>

追加的数据部分以AppendedData元素中下划线后的第一个字符开始。下划线不是数据的一部分,但始终存在。

本节中的数据始终是二进制形式,但可以进行压缩和/或base64编码。

数据的字节顺序与VTKFile元素的byte_order属性指定的字节顺序匹配。每个DataArray的数据都是连续存储的,并在前一个DataArray的数据之后立即追加,而不使用分隔符。

DataArray的offset属性表示从下划线后的第一个字符到其数据开头的文件位置偏移量。

2.2.2Parallel File Formats.

并行文件格式实际上并不在文件中存储任何数据。相反,数据被分解成片段,每个片段都存储在同一数据集类型的串行文件中。

VTKFile元素包含一个元素,其名称与文件描述的数据集类型相对应,但是前缀为“P”。我们称之为并行数据集元素,它是PImageData,precilitineargrid,PStructuredGrid、PPolyData或PUnstructuredGrid.

parallel dataset元素和嵌套在其中的元素指定数据数组的类型,数据数组用于存储点points、点数据point data和单元数据cell data。用于存储单元cells的数组类型由VTK固定。

元素实际上不包含任何数据,而是包含一个片段Pieces元素列表,这些片段pieces元素指定从中读取每个片段的源。单个片段pieces窜出在相应的串行文件格式中。并行文件需要指定类型和结构信息,以便读取器可以更新管道信息,而不必真的读取片段文件。

每个并行数据集格式的一般结构如下:

PImageData

PImageData元素指定数据集的整个范围WholeExtent以及各个片段中的范围重叠的重影级别GhostLevel数。“原点Origin”和“间距Spacing”属性隐式指定点位置。每个Piece元素描述一个片段piece的范围extent和存储它的文件.

<VTKFile type=”PImageData” ...><PImageData WholeExtent=”x1 x2 y1 y2 z1 z2”GhostLevel=”#” Origin=”x0 y0 z0” Spacing=”dx dy dz”><PPointData>...</PPointData><PCellData>...</PCellData><Piece Extent=”x1 x2 y1 y2 z1 z2” Source=”imageData0.vti”/>...</PImageData>
</VTKFile>

PRectilinearGrid

precilitineargrid元素指定数据集的整个范围WholeExtent以及各个片段中的范围重叠的重影级别GhostLevel数。

PCoordinates元素描述用于指定沿每个轴点坐标的数组类型,但实际上不包含数据。

每个Piece元素描述一个片段Piece的范围Extent和存储它的文件。

<VTKFile type=”PRectilinearGrid” ...><PRectilinearGrid WholeExtent=”x1 x2 y1 y2 z1 z2”GhostLevel=”#”><PPointData>...</PPointData><PCellData>...</PCellData><PCoordinates>...</PCoordinates><Piece Extent=”x1 x2 y1 y2 z1 z2”Source=”rectilinearGrid0.vtr”/>...</PRectilinearGrid>
</VTKFile>

 PStructuredGrid

psStructuredGrid元素指定数据集的整个范围WholeExtent以及各个片段中的范围重叠的重影级别GhostLevel数。

PPoints元素描述用于指定点位置的数组的类型,但实际上不包含数据。

每个Piece元素描述一个片段piece的范围和存储它的文件。

<VTKFile type=”PStructuredGrid” ...><PStructuredGrid WholeExtent=”x1 x2 y1 y2 z1 z2”GhostLevel=”#”><PPointData>...</PPointData><PCellData>...</PCellData><PPoints>...</PPoints><Piece Extent=”x1 x2 y1 y2 z1 z2”Source=”structuredGrid0.vts”/>...</PStructuredGrid>
</VTKFile>

PPolyData

PPolyData元素指定各个片段重叠的重影级别GhostLevel数。

PPoints元素描述用于指定点位置的数组的类型,但实际上并不包含数据。

每个Piece元素指定存储工件的文件。

<VTKFile type=”PPolyData” ...><PPolyData GhostLevel=”#”><PPointData>...</PPointData><PCellData>...</PCellData><PPoints>...</PPoints><Piece Source=”polyData0.vtp”/>...</PPolyData>
</VTKFile>

 PUnstructuredGrid

PUnstructuredGrid元素指定各个片段重叠的重影级别GhostLevel数。

PPoints元素描述用于指定点位置的数组的类型,但实际上不包含数据。

每个Piece元素指定存储工件的文件。

<VTKFile type=”PUnstructuredGrid” ...><PUnstructuredGrid GhostLevel=”0”><PPointData>...</PPointData><PCellData>...</PCellData><PPoints>...</PPoints><Piece Source=”unstructuredGrid0.vtu”/>...</PUnstructuredGrid>
</VTKFile>

 PPointData和PCellData

每个数据集都使用PPointData和PCellData元素来描述与其点和单元格关联的数据数组的类型。

这些元素只是镜像PointData和CellData元素来自串行文件格式。

它们包含描述数据数组的PDataArray元素,但没有任何实际数据。

<PPointData Scalars=”Temperature” Vectors=”Velocity”><PDataArray Name=”Velocity” .../><PDataArray Name=”Temperature” .../><PDataArray Name=”Pressure” .../>
</PPointData>

PPoints和PCoordinates

对于需要指定点的数据集,以下元素从串行文件格式镜像它们的对应项:

PPoints元素包含一个PDataArray元素,用于描述一个包含三个组件的数组。

数据数组实际上不包含任何数据

<PPoints><PDataArray NumberOfComponents=”3” .../>
</PPoints>

PCoordinates元素包含三个PDataArray元素,描述用于指定沿每个轴的坐标的数组。数据数组实际上并不包含任何数据。

<PCoordinates><PDataArray .../><PDataArray .../><PDataArray .../>
</PCoordinates>

PDataArray 

PDataArray元素指定DataArray元素的类型、名称和NumberOfComponents属性(可选)。它不包含实际数据。

读取器可以使用它在其输出中创建数据数组,而不需要读取任何实际数据,这在某些情况下是高效管道更新所必需的

<PDataArray type=”Float32” Name=”vectors” NumberOfComponents=”3”/>

Example

下面是一个完整的示例,它指定了一个vtkPolyData,表示在其点和面上具有一些标量数据的立方体。

<?xml version="1.0"?>
<VTKFile type="PPolyData" version="0.1" byte_order="LittleEndian"><PPolyData GhostLevel="0"><PPointData Scalars="my_scalars"><PDataArray type="Float32" Name="my_scalars"/></PPointData><PCellData Scalars="cell_scalars" Normals="cell_normals"><PDataArray type="Int32" Name="cell_scalars"/><PDataArray type="Float32" Name="cell_normals" NumberOfComponents="3"/></PCellData><PPoints><PDataArray type="Float32" NumberOfComponents="3"/></PPoints><Piece Source="polyEx0.vtp"/></PPolyData>
</VTKFile>
<?xml version="1.0"?>
<VTKFile type="PolyData" version="0.1" byte_order="LittleEndian"><PolyData><Piece NumberOfPoints="8" NumberOfVerts="0" NumberOfLines="0"NumberOfStrips="0" NumberOfPolys="6"><Points><DataArray type="Float32" NumberOfComponents="3" format="ascii">0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1</DataArray></Points><PointData Scalars="my_scalars"><DataArray type="Float32" Name="my_scalars" format="ascii">0 1 2 3 4 5 6 7</DataArray></PointData><CellData Scalars="cell_scalars" Normals="cell_normals"><DataArray type="Int32" Name="cell_scalars" format="ascii">0 1 2 3 4 5</DataArray><DataArray type="Float32" Name="cell_normals"NumberOfComponents="3" format="ascii">0 0 -1 0 0 1 0 -1 0 0 1 0 -1 0 0 1 0 0</DataArray></CellData><Polys><DataArray type="Int32" Name="connectivity" format="ascii">0 1 2 3 4 5 6 7 0 1 5 4 2 3 7 6 0 4 7 3 1 2 6 5</DataArray><DataArray type="Int32" Name="offsets" format="ascii">4 8 12 16 20 24</DataArray></Polys></Piece></PolyData>
</VTKFile>

该例子在paraview显示效果如下:

3.PVD File Format

PVD,ParaView Data file format,是ParaView的本机数据文件格式。PVD支持在ParaView中加载或创建的任何类型的数据集(多边形、均匀直线、非均匀直线、曲线或非结构化),包括空间分区、多块和时间序列数据。

PVD文件格式是基于XML的。

PVD文件实际上提供指向数据文件集合的指针,数据文件集合用于存储当前数据集各种组件。

集合Collection中的每个数据文件都使用基于XML的VTK文件格式(串行或并行版本-但不是传统的“.VTK”文件格式)VTK有两种文件格式,PVD使用的是第二种

PVD文件中的第一行指定XML版本(当前为“1.0”)。

<?xml version="1.0"?>

接下来是VTKFile元素。此元素的属性如下所示:

<VTKFile type="Collection" version="0.1"byte_order="LittleEndian"compressor="vtkZLibDataCompressor">

type:此属性设置为“Collection”,表示加载此数据文件需要加载一组数据文件。

version:version属性列出用于写入此文件的vtkXMLWriter的版本。当前版本为“0.1”。此属性仅供参考;它不是必需的。

byte_order:因为这是一个ASCII文件,所以不需要此属性。如果存在,则设置为“BigEndian”或“LittleEndian”,具体取决于写入此文件的平台的字节顺序。Intel CPU(大多数商用笔记本电脑和台式机)使用小端字节顺序;powerpccpu(旧的Macintosh机器、IBM集群和超级计算机)使用big-endian。

compressor:该属性应设置为“vtkZLibDataCompressor”。此属性不是必需的。

VTKFile下面的XML子元素是Collection。<Collection></Collection>标记列出此集合中各个数据文件的DataSet元素。DataSet元素(每个子文件一个)支持以下XML属性:

 <Collection><DataSet timestep="0" group="" part="0"file="examplePVD/examplePVD_T0000.vtp"/><DataSet timestep="1" group="" part="0"file="examplePVD/examplePVD_T0001.vtp"/><DataSet timestep="2" group="" part="0"file="examplePVD/examplePVD_T0002.vtp"/><DataSet timestep="3" group="" part="0"file="examplePVD/examplePVD_T0003.vtp"/><DataSet timestep="4" group="" part="0"file="examplePVD/examplePVD_T0004.vtp"/></Collection>

timestep:此属性仅用于存储时变数据集。它的值是浮点值。

group:group属性列出ParaView分配的唯一标识符,该标识符标识创建此数据集Dataset的源Source、读取器reader或筛选器filter的。此属性不是必需的;仅供参考。

part:此属性的值是当前数据集此部分的标识号。它是一个大于或等于0的整数值。

file:此属性包含此数据集中某个子文件的文件名。如果子文件与.pvd文件不在同一目录中,则此属性将包含从.pvd文件位置到子文件的相对路径。

下面显示了一个.pvd文件示例。它是包含五个时间步骤的时变数据集。

<?xml version="1.0"?>
<VTKFile type="Collection" version="0.1"byte_order="LittleEndian"compressor="vtkZLibDataCompressor"><Collection><DataSet timestep="0" group="" part="0"file="examplePVD/examplePVD_T0000.vtp"/><DataSet timestep="1" group="" part="0"file="examplePVD/examplePVD_T0001.vtp"/><DataSet timestep="2" group="" part="0"file="examplePVD/examplePVD_T0002.vtp"/><DataSet timestep="3" group="" part="0"file="examplePVD/examplePVD_T0003.vtp"/><DataSet timestep="4" group="" part="0"file="examplePVD/examplePVD_T0004.vtp"/></Collection>
</VTKFile>

paraview数据文件格式PVD 和VTK数据文件格式相关推荐

  1. 《利用Python进行数据分析·第2版》第6章 数据加载、存储与文件格式

    第1章 准备工作 第2章 Python语法基础,IPython和Jupyter 第3章 Python的数据结构.函数和文件 第4章 NumPy基础:数组和矢量计算 第5章 pandas入门 第6章 数 ...

  2. LabVIEW将现有数据文件映射至TDMS数据文件格式

    LabVIEW将现有数据文件映射至TDMS数据文件格式 在某些情况下,可能无法使用TDMS文件格式,例如客户或供应商指定必须使用某种格式存储数据.有些传统仪器可能会自动使用某种自定义格式提供数据输出文 ...

  3. 数据加载、存储与文件格式(python)

    文章目录 6.1 读写文本格式的数据 逐块读取文本文件 将数据写出到文本格式 JSON 数据 访问数据是使用本书所介绍的这些工具的第一步.我会着重介绍 pandas 的数据输入与输出,虽然别的库中也有 ...

  4. pandas入门(6)——数据加载、存储与文件格式

    pandas入门(6)--数据加载.存储与文件格式 输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用Web API操作网络资源 一.读取文本格式数据 函 ...

  5. 利用Python进行数据分析(四):数据加载、存储与文件格式

    标题利用Python进行数据分析(四):数据加载.存储与文件格式 学习笔记来源于:简书https://www.jianshu.com/p/047d8c1c7e14 输入输出通常可以划分为几个大类:读取 ...

  6. [数据压缩]WAV文件格式分析及AVI数据结构分析

    目录 WAV文件格式分析 WAV概述 WAV文件格式分析 根据实例的WAV文件结构分析 AVI数据结构 音频与视频的数据放置方式 视频帧与音频帧的字节数 参考引用 WAV文件格式分析 WAV概述 Wa ...

  7. 《利用python进行数据分析》——第6章 数据加载、存储与文件格式——读书笔记

    第6章 数据加载.存储与文件格式 6.1 读写文本格式的数据 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数. 其中read_csv和read_talbe用得最多 panda ...

  8. CDDIS网站下 GNSS 相关的数据产品下载+命名方式解读+文件格式说明文件下载地址

    由于常用的ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/地址在2020年10月31日禁止匿名用户访问,所以cddis数据只能从http下面下载,不管是ftp ...

  9. paraview vtk文件乱码_如何在ParaView中为一系列传统VTK文件设置自定义时间步长值?...

    我有一个legacy VTK files的序列,例如:file_0.vtk,file_1.vtk,file_2.vtk,我可以在ParaView中打开它作为文件_ .. vtk的时间序列(descri ...

最新文章

  1. java弹出微信扫一扫_JAVA实现调用微信js-sdk扫一扫
  2. Librepilot-创建UAVObject及编译到飞机端和地面站端的步骤
  3. Android学习按键事件监听与Command模式
  4. mysql的unique_MySQL使用UNIQUE实现数据不重复插入
  5. 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController
  6. mysql explain desc_MySQL中EXPLAIN命令详解
  7. PowerPhotos:Mac照片库管理软件
  8. blender 中文手册 Blender从入门到精通
  9. h264和h265视频流SDP描述详解
  10. python语言程序设计王小银_Python语言程序设计答案
  11. vue.js—60秒倒计时
  12. Servlet中forward和redirect的区别(转)
  13. SimpleDateFormat的概述
  14. (转)对冲基金:Citadel如何屹立市场20年不倒
  15. Vuforia 虚拟按钮(Unity 2020)
  16. 筹码集中度指标公式怎么写
  17. 排位赛2-I Would Walk 500 Miles
  18. win10安装redis及redis客户端使用方法
  19. token和deviceId
  20. 08第3周回顾:Sun成开源梦幻企业 甲骨文结束并购长征

热门文章

  1. VBA智慧办公9——图例控件教程
  2. Lower Power with CPF(一)
  3. 深度学习框架之TensorFlow
  4. 我开通留言了 !!!
  5. Python numpy.vander函数方法的使用
  6. app mysql数据库设计_知到APPMySQL数据库设计与应用选修课答案
  7. tolua lua 添加 C库的byte[] 解析 byteArray ipack
  8. ConcurrentHashMap源码解析——基于JDK1.8
  9. mysql优化案例,mysql优化实例汇总
  10. 域名更改解析IP后,部分电脑还是访问的原来IP