VTK XML 文件格式

前端之家收集整理的这篇文章主要介绍了VTK XML 文件格式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

文件来源:http://www.vtk.org/VTK/img/file-formats.pdf@H_403_1@


@H_403_1@

vtk 提供 xml 数据格式, 比前述数据格式复杂,故也支持更多特征,主要是方便流管理和并行i/o,也有些特征,比如支持文件压缩,二进制解码,任意访问点,big/little 字节顺序,数据分块,支持非vtk扩展名等。xml不仅提供上述特征,也提供针对具体应用问题的特征标签支持。@H_403_1@

vtk xml 数据文件包括两类:并行格式 和串行格式。@H_403_1@

xml格式包括两类: 结构化,非结构化。@H_403_1@

结构化格式,即数据集是单元的拓扑规则排序,比如图像的像素,体素,结构网格中使用的四面体,六面体。vtk中结构化数据集类型包括: vtkImageData,vtkRectilinearGrid,vtkStructuredGrid@H_403_1@

非结构化格式:数据集不能由单元规则拓扑表示。数据集子块用pieces描述。包括:vtkPolydata,vtkUnstructuredGrid@H_403_1@


@H_403_1@

常见数据类型和文件类型:@H_403_1@

ImageData(.vti) -> vtkImageData(结构化)@H_403_1@

PolyData(.vtp) -> vtkPolyData(非结构化)@H_403_1@

RectilinearGrid(.vtr) -> vtkRectilinearGrid(结构化)@H_403_1@

StructuredGrid(.vts) -> vtkStructuredGrid(结构化)@H_403_1@

UnstructuredGrid(.vtu)-> vtkUnstructuredGrid(非结构化)@H_403_1@

上述类型加P- 前缀,即对应类型的并行类型。@H_403_1@


@H_403_1@

所有 vtk xml 文件都是合法的xml文件, 形式如下;@H_403_1@

<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">@H_403_1@

...@H_403_1@

</VTKFile>@H_403_1@


@H_403_1@

其中, type 表示该文件类型; version表示文件版本号(major.minor);byte_order表示字节码存储顺序(bigendian,littleendian),compressor,有些数据支持压缩。@H_403_1@

@H_403_1@

串行xml文件格式:@H_403_1@

上述vtkfile之间嵌套的内容,称为数据集单元,为上述五类数据类型之一。每个数据集单元又包含若干piece单元。每个piece描述自己的几何属性(节点,单元),不同数据集类型的几何属性不同,但是任何数据集类型的piece都包含 pointdata 和 celldata,用来指明该piece中的节点和单元。@H_403_1@


@H_403_1@

举例1: 结构化网格, 其中节点由points单元显示描述,单元由内容隐式描述。@H_403_1@

<VTKFile type="StructuredGrid" ...>@H_403_1@

<StructuredGrid WholeExtent =" x1 x2 y1 y2 z1 z2">@H_403_1@

<Piece Extent = "x1 x2 y1 y2 z1 z2">@H_403_1@

<PointData> ... </PointData>@H_403_1@

<CellData> ... </CellData>@H_403_1@

<Points> ... </Points>@H_403_1@

</Piece>@H_403_1@

</StructuredGrid>@H_403_1@

</VTKFile>@H_403_1@


@H_403_1@

举例2: 非结构化网格, 各piece的节点,单元都需要显示表示。@H_403_1@

<VTKFile type="UnstructuredGrid" ...>@H_403_1@

<UnstructuredGrid>@H_403_1@

<Piece NumberOfPoints=# NumberOfCells=#>@H_403_1@

<PointData> ... </PointData>@H_403_1@

<CellData> ... </CellData>@H_403_1@

<Points> .... </Points>@H_403_1@

<Cells> ... </Cells>@H_403_1@

</Piece>@H_403_1@

</UnstructuredGrid>@H_403_1@

</VTKFile>@H_403_1@


@H_403_1@

数据集合(的属性值)由其节点,单元表示,如下@H_403_1@

<PointData Scalars ="Pressure" Vectors="Velocity">@H_403_1@

<DataArray Name="Velocity" Type=# Format=$> ... </DataArray>@H_403_1@

<DataArray Name="Pressure" Type=# Format=$> ... </DataArray>@H_403_1@

</PointData>@H_403_1@


@H_403_1@

vtk允许使用任意数目的 DataArray来描述与之关联数据集的节点,单元。DataArray 的名称包括:@H_403_1@

Scalars,Vectors,Normals,Tensors,TCoords@H_403_1@


@H_403_1@

vtk也允许安如下方式定义/描述数据集的节点,单元:@H_403_1@

points,显式定义各个节点的坐标。@H_403_1@

<Points>@H_403_1@

<DataArray NumberOfComponents = "3" ...>@H_403_1@

....@H_403_1@

</DataArray>@H_403_1@

</Points>@H_403_1@


@H_403_1@

coordinates,显式定义坐标,并为每个方向的坐标值给出一个DataArray
@H_403_1@

<Coordinates>@H_403_1@

<DataArray .. x_coordinate>@H_403_1@

<DataArray .. y_coordinate>@H_403_1@

<DataArray .. z_coordinate>@H_403_1@

</Coordinates>@H_403_1@


@H_403_1@

verts,lines,strips,ploys: 显式定义个节点的连接关系,单元类型也可由此连接关系隐式推导了。此类描述需要两个DataArray。第一个定义节点连接关系,所有cell里面的节点全部连接起来,第二个DataArray用来定义两个cell之间的offset(偏量)@H_403_1@

<Verts>@H_403_1@

<DataArray type="Int32" Name="connectivity" ..>@H_403_1@

<DataArray type="Int32" Name="offsets" ...>@H_403_1@

</Verts>@H_403_1@

cells,显式定义节点连接和单元类型。包括三个DataArray。第一个定义节点连接关系,包含所有节点;第二个定义cell之间的偏量,第三个定义每个cell的类型。@H_403_1@

<Cells>@H_403_1@

<DataArray type="Int32" Name="connectivity" ... >@H_403_1@

<DataArray type="Int32" Name="offsets" ...>@H_403_1@

<DataArray type="UInt8" Name="types" ..>@H_403_1@

</Cells>@H_403_1@


@H_403_1@

上述所有由DataArray定义的数据,几何,其中具体内容如下:@H_403_1@

<DataArray type="Float32" Name="vectors" NumberOfComponents="3" format="appended" Offset="0" >@H_403_1@

<DataArray type="Float32" Name="scalars" format="binary">@H_403_1@

<DataArray type="Int32" Name="offsets" format="ascii" >@H_403_1@

属性值如下:@H_403_1@

type,array中元素的数据类型,如 Int8,UInt8,Int16,UInt16,Int32 .. Float32,Float64@H_403_1@

name,array的名称@H_403_1@

format,数据存储格式,如 ascii binary appended@H_403_1@

offset,当format=appened,offset值就是追加数据距上一次数据尾巴的偏量@H_403_1@


@H_403_1@

最后举例cfd后处理vtk数据格式:@H_403_1@


@H_403_1@

1 <?xml version="1.0"?>@H_403_1@

2 <VTKFile type="UnstructuredGrid"version="0.1"byte_order="LittleEndi an">@H_403_1@

3 <UnstructuredGrid>@H_403_1@

4 <PieceNumberOfPoints="3"NumberOfCells="1">@H_403_1@

5 <PointDataScalars="Pressure"Vectors="Velocity">@H_403_1@

6 <DataArray type="Float32"Name="Pressures"NumberOfComponents ="3"format="ascii">@H_403_1@


@H_403_1@

10 </DataArray>@H_403_1@

11@H_403_1@

12 <DataArray type="Float32"Name="Density"format="ascii">@H_403_1@

13 ...@H_403_1@

14 </DataArray>@H_403_1@

15 @H_403_1@

16 <DataArray type="Float32"Name="Velocity"NumberOfComponents= "2" format="ascii">@H_403_1@

17 ...@H_403_1@

18 </DataArray>@H_403_1@

19 @H_403_1@

20 </PointData>@H_403_1@

21 @H_403_1@

22 <Points>@H_403_1@

23 <DataArraytype="Float32"NumberOfComponents="3"format="ascii" > @H_403_1@

24 0.01 0.01 0.02@H_403_1@

25 </Point>@H_403_1@

26 @H_403_1@

27 <Cells>@H_403_1@

28 <DataArray type="Int32"Name="connectivity"NumberOfComponent s="1"format="ascii">@H_403_1@

29 0 1 2@H_403_1@

30 </DataArray>@H_403_1@

31 @H_403_1@

32 <DataArray type="Int32"Name="offsets"NumberOfComponents="1" format="ascii">@H_403_1@

33 3@H_403_1@

34 </DataArray>@H_403_1@

@H_403_1@

35 @H_403_1@

36 <DataArray type="Int32"Name="types"NumberOfComponents="1"f ormat="ascii">@H_403_1@

37 5@H_403_1@

38 </DataArray>@H_403_1@

39 </Cells>@H_403_1@

40@H_403_1@

41 <!--<CellData Scalars="Material">@H_403_1@

42 <DataArray type="Int32" Name="Material" NumberOfComponents="1 " format="ascii">@H_403_1@

43 1@H_403_1@

44 </DataArray>@H_403_1@

45 </CellData>@H_403_1@

46 -->@H_403_1@

47 </Piece>@H_403_1@

48 </UnstructuredGrid>@H_403_1@

49 </VTKFile>@H_403_1@

猜你在找的XML相关文章