上一节课内容回顾

54
环环环环环环环 环环环环环环环环环环环环 环环环环环环 VTK: A Tutorial 环环 VTK 环环环环环 1 What is VTK? 2 VTK 环环环环 3 VTK 环环环环环

description

上一节课内容回顾. VTK: A Tutorial , 介绍 VTK 的基本内容 1 What is VTK? 2 VTK 图形模型 3 VTK 可视化模型. 上一节课内容回顾. 1 VTK 结构 VTK 在 API 访问接口上包括两个主要部分 : C ++实现的核心层 自动生成的接口层,包括 Tcl 、 Java 和 Python. 上一节课内容回顾. 2 图形模型子系统. 上一节课内容回顾. 3 VTK 可视化管道. 本节课内容. 4.1 可视化数据类型 4.2 科学数据管理 4.3 科学数据格式 4.4 图形图像数据格式 - PowerPoint PPT Presentation

Transcript of 上一节课内容回顾

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾VTK A Tutorial 介绍 VTK 的基本内容

1 What is VTK

2 VTK 图形模型

3 VTK 可视化模型

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾1 VTK 结构

VTK 在 API 访问接口上包括两个主要部分

bull C ++实现的核心层

bull 自动生成的接口层包括 Tcl Java 和 Python

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾2 图形模型子系统

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾3 VTK 可视化管道

环境信息可视化 第四讲数据类型和数据操作

本节课内容41 可视化数据类型

42 科学数据管理

43 科学数据格式

44 图形图像数据格式

45 VTK 中的数据对象

46 VTK 的文件格式

环境信息可视化 第四讲数据类型和数据操作

41 可视化数据类型 可视化系统可看作完成多种数据映射操作的流水线

411 数据属性

bull数据源--相对于计算机系统 内部数据源--可视化系统内部产生的数据包括

保存在存储器中的数据 模型计算产生的数据

外部数据源--包括卫星数据实验数据等bull数据类型--数值型数据和图像型数据

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾1 VTK 结构

VTK 在 API 访问接口上包括两个主要部分

bull C ++实现的核心层

bull 自动生成的接口层包括 Tcl Java 和 Python

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾2 图形模型子系统

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾3 VTK 可视化管道

环境信息可视化 第四讲数据类型和数据操作

本节课内容41 可视化数据类型

42 科学数据管理

43 科学数据格式

44 图形图像数据格式

45 VTK 中的数据对象

46 VTK 的文件格式

环境信息可视化 第四讲数据类型和数据操作

41 可视化数据类型 可视化系统可看作完成多种数据映射操作的流水线

411 数据属性

bull数据源--相对于计算机系统 内部数据源--可视化系统内部产生的数据包括

保存在存储器中的数据 模型计算产生的数据

外部数据源--包括卫星数据实验数据等bull数据类型--数值型数据和图像型数据

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾2 图形模型子系统

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾3 VTK 可视化管道

环境信息可视化 第四讲数据类型和数据操作

本节课内容41 可视化数据类型

42 科学数据管理

43 科学数据格式

44 图形图像数据格式

45 VTK 中的数据对象

46 VTK 的文件格式

环境信息可视化 第四讲数据类型和数据操作

41 可视化数据类型 可视化系统可看作完成多种数据映射操作的流水线

411 数据属性

bull数据源--相对于计算机系统 内部数据源--可视化系统内部产生的数据包括

保存在存储器中的数据 模型计算产生的数据

外部数据源--包括卫星数据实验数据等bull数据类型--数值型数据和图像型数据

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

上一节课内容回顾3 VTK 可视化管道

环境信息可视化 第四讲数据类型和数据操作

本节课内容41 可视化数据类型

42 科学数据管理

43 科学数据格式

44 图形图像数据格式

45 VTK 中的数据对象

46 VTK 的文件格式

环境信息可视化 第四讲数据类型和数据操作

41 可视化数据类型 可视化系统可看作完成多种数据映射操作的流水线

411 数据属性

bull数据源--相对于计算机系统 内部数据源--可视化系统内部产生的数据包括

保存在存储器中的数据 模型计算产生的数据

外部数据源--包括卫星数据实验数据等bull数据类型--数值型数据和图像型数据

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

本节课内容41 可视化数据类型

42 科学数据管理

43 科学数据格式

44 图形图像数据格式

45 VTK 中的数据对象

46 VTK 的文件格式

环境信息可视化 第四讲数据类型和数据操作

41 可视化数据类型 可视化系统可看作完成多种数据映射操作的流水线

411 数据属性

bull数据源--相对于计算机系统 内部数据源--可视化系统内部产生的数据包括

保存在存储器中的数据 模型计算产生的数据

外部数据源--包括卫星数据实验数据等bull数据类型--数值型数据和图像型数据

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

41 可视化数据类型 可视化系统可看作完成多种数据映射操作的流水线

411 数据属性

bull数据源--相对于计算机系统 内部数据源--可视化系统内部产生的数据包括

保存在存储器中的数据 模型计算产生的数据

外部数据源--包括卫星数据实验数据等bull数据类型--数值型数据和图像型数据

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

bull数据量如何高效地处理生成和接受大量的数据现有科学计算数据具有下列特征

海量数据集数据随时间变化数据集由多个数据域组成数据集具有不同的成分和结构

bull数据的结构

数据系统的基本元素是位( bit )位之上有多级抽象表示(字节字结构记录等)

低层次上有一些基本的构造块(整数浮点数等)高层次上有数据和结构之类的对象

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

bull1048708 Dimensionality (number of independent variables)1048708 Parameters (dependent variables the data themselves)bull1048708 Data Type1048708 byte int float or real complex etc1048708 can mean object structures such as triangle strips or pointgeometry)bull1048708 Rank (the number of values associated with adependent variable)1048708 Rank 0 scalar1048708 Rank 1 vector1048708 Rank 2 tensorbull1048708 Structure1048708 mesh structure1048708 connection information or relations for data points)bull1048708 Aggregation (collections of dependent variables orstructures treated as a single entity)

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

Dataset Design Criteriabull1048708 Compact - compact storage for large databull1048708 Efficient - retrieve compute store as fast as possible (O(n) if possible)bull1048708 Mappable - into graphical primitives into visualization data structuresbull1048708 Minimal Coverage - a minimal number of data representations to balance efficiency against number of data typesbull1048708 Simple - simple data structures simple visualization algorithms

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

412 数据分类

数据集--单个记录文件或文件集合数据分类方法很多包括基于数据源数据格式和数据类型的分类方法

bull外部数据 内部数据bull原始数据 导出数据bull基本元素 逻辑集bull几何数据 特性数据bull记录数据

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

针对环境问题

bull 针对某一特征的数据- -属性数据如污染物浓度等

bull 针对某一空间位置上某一特征的数据--属性数据几何位置数据

bull 针对某一空间区域上某一特征的数据--属性数据几何位置数据空间拓扑数据

属性数据几何位置数据

空间拓扑数据

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

413 网格数据

bull笛卡儿网格bull规整网格bull矩形网格bull结构网格bull非结构网格bull曲线网格bull块结构网格bull混合结构网格bull散乱点

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

42 科学数据管理用于科学计算可视化的数据库管理系统应具有

bull提供读写的一般方法bull对数据进行有效组织bull用户可接受的响应时间用户能与数据进行交互bull把数据管理与单纯的数据访问分开bull数据完整性的维护bull安全性策略

421 数据描述和处理语言SQL 语句分为

数据描述语言 DDL 数据处理 DML模块与过程

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

422 数据存档

bull原始数据bull内部导出数据bull图像或图像数据bull元数据

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

43 科学数据格式431 HDF格式是美国 NCSA 开发的一种科学数据格式是多对象文件格式bull结构通用的文件结构具有如下功能 能直接从文件获取与数据有关的信息 允许对数据和相关信息进行混合存贮 对多种常用数据集的描述和格式进行标准化 通过定义新的标记( tag)或标记组合方法存储任何类型的数据

bull数据类型bull 8为图像数据集bull 24 位图像数据集bull 科学数据集( SDS )--矩形网格数据bull 注解bull VSets

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

432 CDF和 NetCDFCDF-- NASA 开发的科学数据模型的具体实现NetCDF--美国 Unidata 开发的科学数据格式

bull结构bull数据bull使用

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

44 图形图像数据格式441 图形文件 图像文件生成图形从原始数据生成图像和图形经过了一系列变换过程每个变换过程可能产生不同于输入数据的输出数据这些数据按照一定的结构进行组织形成了图形图像文件

图形图像数据具有如下特点性

bull数据量大

bull结构性

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

442 图形图像文件格式bull 位图 光栅图像格式 Targa PCX GIF TIFF EA IFF 85 X Bitmap Ximage Sun Rasterfile PICT IIF

bull 向量 对象文件格式 OFF PostScript HPGL NTF PHICS Archive CGM FITS DXF

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

443 数据格式转换工具bull对于特定的可视化系统往往只支持部分数据格式bull随着数据交换需求的增加迫切需要数据格式转换工具

数据格式转换工具很多代表性的有

bullPhotoShopGIMPmdash典型的图像处理软件

bullIFFCT --图像文件格式转换工具

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

45 VTK 中的数据对象

VTK 一般把数据表示成场数据数据集是带有拓扑和几何结构的数据对象除了空间结构数据集还附带有属性数据属性数据包括标量 矢量 张量 法向 纹理坐标 以及场数据

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数组类vtkDataArray

vtkBitArray vtkCharArray vtkDoubleArray vtkFloatArray vtkIdTypeArray vtkIntArray vtkLongArray vtkShortArray vtkUnsignedCharArray vtkUnsignedIntArray vtkUnsignedLongArray vtkUnsignedShortArray

vtkVoidArray

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

VTK 中的列表类vtkCollection

vtkAssemblyPath vtkAssemblyPaths vtkCullerCollection vtkDataArrayCollection vtkDataObjectCollection vtkDataSetCollection vtkIdListCollection vtkImageReader2Collection vtkImplicitFunctionCollection vtkLightCollection vtkMapperCollection vtkObjectFactoryCollection vtkOverrideInformationCollection vtkPlaneCollection vtkPolyDataCollection

vtkPropCollection

vtkActor2DCollection

vtkActorCollection

vtkProp3DCollection

vtkVolumeCollection vtkRendererCollection vtkRenderWindowCollection vtkStructuredPointsCollection vtkTransformCollection

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

VTK 中的拓扑单元类vtkCell

vtkCell3D vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge

vtkEmptyCell vtkGenericCell vtkLine vtkPixel vtkPolygon vtkPolyLine vtkPolyVertex vtkQuad

vtkTriangle vtkTriangleStrip vtkVertex vtkNonLinearCell

vtkExplicitCell vtkQuadraticEdge vtkQuadraticHexahedr

on vtkQuadraticQuad vtkQuadraticTetra vtkQuadraticTriangle

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作VTK 中的数据对象类vtkDataObject

vtkPiecewiseFunctionvtkDataSet

vtkImageDatavtkStructuredPoints

vtkImageCanvasSource2DvtkPointSet

vtkPolyDatavtkStructuredGridvtkUnstructuredGrid

vtkRectilinearGridvtkUniformGrid

vtkCompositeDataSet vtkHierarchicalDataSet

vtkHierarchicalBoxDataSet vtkMultiBlockDataSet

vtkFieldDatavtkDataSetAttributes

vtkPointDatavtkCellData

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

VTK 中的数据对象关系图

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

46 环境科学与工程中数据的表示

( 1)离散点数据 如采样点数据( 2d3d)( 2)结构格网数据 如流体计算网格( 3)规则格网数据 如 DEM 数据( 4)多边形数据 如地形图数据流化床的结构数据

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作47 在 VTK 中的创建数据对象示例pcoords = vtkvtkFloatArray()pcoordsSetNumberOfComponents(3)pcoordsSetNumberOfTuples(4)

pcoordsSetTuple3(0 00 00 00)pcoordsSetTuple3(1 10 00 00)pcoordsSetTuple3(2 00 10 00)pcoordsSetTuple3(3 10 10 00)

points = vtkvtkPoints() 构造点集对象pointsSetData(pcoords)

strips = vtkvtkCellArray() 构造拓扑单元stripsInsertNextCell(4)stripsInsertCellPoint(0)stripsInsertCellPoint(1)stripsInsertCellPoint(2)stripsInsertCellPoint(3)

(000) (100)

(010) (110)

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作temperature = vtkvtkIntArray()temperatureSetName(ldquo 温度 )temperatureInsertNextValue(10)temperatureInsertNextValue(20)temperatureInsertNextValue(30)temperatureInsertNextValue(40)

concentration= vtkvtkDoubleArray()concentrationSetName(ldquo 浓度 )concentrationInsertNextValue(27)concentrationInsertNextValue(41)concentrationInsertNextValue(53)concentrationInsertNextValue(34)

polydata = vtkvtkPolyData() 构造多边形数据对象polydataSetPoints(points) 几何点polydataSetStrips(strips) 拓扑单元

polydataGetPointData()SetScalars(temperature) 设置点集属性数据polydataGetPointData() SetScalars(concentration)

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作48 VTK 的文件格式VTK 文件以 vtk为扩展名由五个基本部分组成

( 1)文件版本和标识部分占一行 vtk DataFile Version xx 如 vtk DataFile Version 20( 2)文件标题部分一行简要介绍文件内容 如 This is a dem file for test( 3)文件格式部分一行必须是 ASCII 或 BINARY 如 ASCII( 4 )数据的几何部分必须是 DATASET 开头后跟数据类型描述关键词 如 DATASET POLYDATA( 5)数据的属性部分必须是 POINT_DATA 或 CELL_DATA 开头后跟点或单元的数目 如 POINT_DATA 10

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

注意点 bull在 vtk文件中数据类型只能是如下几种bit unsigned_char char unsigned_short shortunsigned_int int unsigned_long long float or double

bull 数组下标是从 0开始的

bull 如果在文件中同时有几何部分和属性部分则几何部分必须出现在属性部分前面

bull 在属性部分的点或单元的数目必须和几何部分定义的数目一样多

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

vtk文件支持五种几何类型 structured points structured grid rectilinear grid unstructured grid and polygonal data

( 1) structured points支持 2D 和 3D 的结构点类型坐标隐含表示

DATASET STRUCTURED_POINTSDIMENSIONS nx ny nz gt= 1ORIGIN x y zSPACING sx sy sz gt0

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 2) structured grid支持 2D 和 3D 的结构格网类型坐标显式表示在 POINTS段中

DATASET STRUCTURED_GRIDDIMENSIONS nx ny nz gt= 1POINTS n dataType 定义构成结构格网的坐标点p0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 3) Rectilinear Grid支持 2D 和 3D 的正交格网类型坐标轴显式表示在 COORDINATES段中

DATASET RECTILINEAR_GRIDDIMENSIONS nx ny nz gt= 1X_COORDINATES nx dataTypex0 x1 x(nx-1)Y_COORDINATES ny dataTypey0 y1 y(ny-1)Z_COORDINATES nz dataTypez0 z1 z(nz-1)

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作( 4) Polygonal Data支持 2D 和 3D 的多边形类型一般由 POINTS VERTICES LINES POLYGONS TRIANGLE_STRIPS 几个部分组成 POINTS段定义多边形的坐标 VERTICES LINES POLYGONS TRIANGLE_STRIPS 是可选段定义拓扑单元DATASET POLYDATAPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

VERTICES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作LINES n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

POLYGONS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

TRIANGLE_STRIPS n sizenumPoints0 i0 j0 k0 numPoints1 i1 j1 k1 numPointsn-1 in-1 jn-1 kn-1

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 5) Unstructured Grid表示任意的数据类型

DATASET UNSTRUCTURED_GRIDPOINTS n dataTypep0x p0y p0zp1x p1y p1zp(n-1)x p(n-1)y p(n-1)z

CELLS n sizenumPoints0 i j k l numPoints1 i j k l numPoints2 i j k l numPointsn-1 i j k l

CELL_TYPES ntype0type1type2typen-1

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

vtk 文件中属性数据的表示bull 类型标量 矢量 法向量 纹理坐标 张量 和场数据bull 类别点属性和拓扑单元属性( 1)标量SCALARS dataName dataType numComp ( 1 1- 4)LOOKUP_TABLE tableName (ldquo defaultrdquo)s0s1sn-1

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 2) Lookup TableLOOKUP_TABLE tableName sizer0 g0 b0 a0r1 g1 b1 a1rsize-1 gsize-1 bsize-1 asize-1

( 3 ) VECTORVECTORS dataName dataTypev0x v0y v0zv1x v1y v1zv(n-1)x v(n-1)y v(n-1)z

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 4) NORMALSNORMALS dataName dataTypen0x n0y n0zn1x n1y n1zn(n-1)x n(n-1)y n(n-1)z

( 5) Texture CoordinatesTEXTURE_COORDINATES dataName dim dataTypet00 t01 t0(dim-1)t10 t11 t1(dim-1)t(n-1)0 t(n-1)1 t(n-1)(dim-1)

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 6 ) TensorsTENSORS dataName dataType

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

( 7 ) FIELDFIELD dataName numArraysarrayName0 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

arrayName1 numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)arrayName(numArrays-1) numComponents numTuples dataTypef00 f01 f0(numComponents-1)f10 f11 f1(numComponents-1)f(numTuples-1)0 f(numTuples-1)1 f(numTuples-1)(numComponents-1)

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作实例 1 vtk DataFile Version 20Cube exampleASCIIDATASET POLYDATAPOINTS 8 float00 00 0010 00 0010 10 0000 10 0000 00 1010 00 1010 10 1000 10 10POLYGONS 6 304 0 1 2 34 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 2 6 5

CELL_DATA 6SCALARS cell_scalars int 1LOOKUP_TABLE default012345NORMALS cell_normals float0 0 -10 0 10 -1 00 1 0-1 0 01 0 0FIELD FieldData 2cellIds 1 6 int0 1 2 3 4 5

faceAttributes 2 6 float00 10 10 20 20 30 30 40 40 50 50 60

POINT_DATA 8SCALARS sample_scalars float 1LOOKUP_TABLE my_table0010203040506070LOOKUP_TABLE my_table 800 00 00 1010 00 00 1000 10 00 1010 10 00 1000 00 10 1010 00 10 1000 10 10 1010 10 10 10

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作实例 2 vtk DataFile Version 20Volume exampleASCIIDATASET STRUCTURED_POINTSDIMENSIONS 3 4 6ASPECT_RATIO 1 1 1ORIGIN 0 0 0POINT_DATA 72SCALARS volume_scalars char 1LOOKUP_TABLE default0 0 0 0 0 0 0 0 0 0 0 00 5 10 15 20 25 25 20 15 10 5 00 10 20 30 40 50 50 40 30 20 10 00 10 20 30 40 50 50 40 30 20 10 00 5 10 15 20 25 25 20 15 10 5 00 0 0 0 0 0 0 0 0 0 0 0

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作实例 3 vtk DataFile Version 20Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 27 float0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 2 1 00 0 1 1 0 1 2 0 1 0 1 1 1 1 1 2 1 10 1 2 1 1 2 2 1 2 0 1 3 1 1 3 2 1 30 1 4 1 1 4 2 1 4 0 1 5 1 1 5 2 1 50 1 6 1 1 6 2 1 6CELLS 11 608 0 1 4 3 6 7 10 98 1 2 5 4 7 8 11 104 6 10 9 124 5 11 10 146 15 16 17 14 13 126 18 15 19 16 20 174 22 23 20 193 21 22 183 22 19 182 26 251 24

CELL_TYPES 11121210107695531POINT_DATA 27SCALARS scalars float 1LOOKUP_TABLE default00 10 20 30 40 5060 70 80 90 100 110120 130 140 150 160 170180 190 200 210 220 230240 250 260

VECTORS vectors float1 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 01 0 0 1 1 0 0 2 0 1 0 0 1 1 0 0 2 00 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1 0 0 1 0 0 1

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作class VtkData(pyvtkcommonCommon) | VtkData | ======= | | Represents VTK file that has four relevant parts | header - string up to length 256 | format - string ascii | binary | DataSet - StructuredPoints | StructuredGrid | UnstructuredGrid | | RectilinearGrid | PolyData | Data - PointData | CellData | | Usage | ------ | v = VtkData(ltDataSet instancegt [ltheader stringgtltData instancesgt]) | vtofile(filename format = ascii) - save VTK data to file | | DataSet | ======= | | StructuredPoints(lt3-sequence of dimensionsgt | [lt3-sequence of origingt [ lt3-sequence of spacinggt]]) | StructuredGrid(lt3-sequence of dimensionsgt | ltsequence of 3-sequences of pointsgt) |

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作 | UnstructuredGrid(ltsequence of 3-sequences of pointsgt | [ltcellgt = ltsequence of (sequences of) integersgt]) | cell - vertex | poly_vertex | line | poly_line | triangle | | triangle_strip | polygon | pixel | quad | tetra | | voxel | hexahedron | wedge | pyramid | RectilinearGrid([x = ltsequence of x-coordinatesgt] | [y = ltsequence of y-coordinatesgt] | [z = ltsequence of z-coordinatesgt]) | PolyData(ltsequence of 3-sequences of pointsgt | [vertices = ltsequence of (sequences of) integersgt] | [lines = ltsequence of (sequences of) integersgt] | [polygons = ltsequence of (sequences of) integersgt] | [triangle_strips = ltsequence of (sequences of) integersgt]) | | Data | ==== | | PointData | CellData ([ltDataSetAttr instancesgt]) - construct Data instanc | | DataSetAttr | =========== | | DataSetAttr - Scalars | ColorScalars | LookupTable | Vectors | | Normals | TextureCoordinates | Tensors | Field

| Scalars(ltsequence of scalarsgt [name[ lookup_table]])

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作 | ColorScalars(ltsequence of scalar sequencesgt [name]) | LookupTable(ltsequence of 4-sequencesgt [name]) | Vectors(ltsequence of 3-sequencesgt [name]) | Normals(ltsequence of 3-sequencesgt [name]) | TextureCoordinates(ltsequence of (12 or 3)-sequencesgt [name]) | Tensors(ltsequence of (3x3)-sequencesgt [name]) | Field([name] [arrayname_1 = sequence of n_1-sequences | arrayname_m = sequence of n_m-sequences]) | where len(array_1) == == len(array_m) must hold | | Methods defined here | | __init__(self structure args) | | tofile(self filename format=ascii) | | ----------------------------------------------------------------------

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspathif sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

structure = PolyData(points=[[000][100][110][010] [001][101][111][011]] polygons=[[0123][4567][0154] [2376][0473][1265]])pointdata = PointData( Scalars([01234567] name=sample_scalars lookup_table=my_table) LookupTable([[0001][1001][0101][1101] [0011][1011][0111][1111]] name=my_table))

celldata = CellData( Scalars([012345] name=cell_scalars) Normals([[00-1][001][0-10] [010][-100][100]] name=cell_normals) Field(FieldData cellIds=[[0][1][2][3][4][5]] faceAttributes=[[01][12][23][34][45][56]]))

vtk = VtkData(structurepointdatacelldata)vtktofile(example1ascii)vtktofile(example1bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

vtk = VtkData(StructuredPoints([346]) PointData(Scalars([000000000000 05101520252520151050 0102030405050403020100 0102030405050403020100 05101520252520151050 000000000000 ])))

vtktofile(example2)vtktofile(example2bbinary)

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作 usrbinenv python

import syssyspath = []+syspath

if sysversion[3]==15 from lib152 import else from lib import

from pyvtk import

points = [[000][100][200][010][110][210] [001][101][201][011][111][211] [012][112][212][013][113][213] [014][114][214][015][115][215] [016][116][216] ]vectors = [[100][110][020][100][110][020] [100][110][020][100][110][020] [001][001][001][001][001][001] [001][001][001][001][001][001] [001][001][001] ]

vtk = VtkData( UnstructuredGrid(points hexahedron=[[014367109] [1254781110]] tetra=[[610912] [5111014]] polygon=[151617141312] triangle_strip=[181519162017] quad=[22232019] triangle=[[212218] [221918]] line=[2625] vertex=[24] ) PointData(Vectors(vectors)Scalars(range(27))) Unstructured Grid Example )vtktofile(example3)vtktofile(example3bbinary)

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化

环境信息可视化 第四讲数据类型和数据操作

下一节课内容第五讲 二维标量场可视化

bull 网格序列法bull 网格无关法bull 区域填充法bull 曲面标量场可视化