我正在填充 VTK 示例,以了解如何制作我创建的数据的简单等高线图。假设我在一个结构化的矩形网格上求解了一个 71x71 域中的简单 PDE,其中节点以相等的距离对齐。
我研究了有关如何可视化来自 *.vtp 文件的数据的filledContours示例。只要我可以编写 .vtp 文件,我就可以了。问题是我不知道如何创建适合等高线绘图的 .vtp 数据文件。我设法从嵌入的演员(如球体或圆锥体)创建 .vtp 文件,但我不知道如何使用我的 2D 数据数组来做到这一点。
我正在填充 VTK 示例,以了解如何制作我创建的数据的简单等高线图。假设我在一个结构化的矩形网格上求解了一个 71x71 域中的简单 PDE,其中节点以相等的距离对齐。
我研究了有关如何可视化来自 *.vtp 文件的数据的filledContours示例。只要我可以编写 .vtp 文件,我就可以了。问题是我不知道如何创建适合等高线绘图的 .vtp 数据文件。我设法从嵌入的演员(如球体或圆锥体)创建 .vtp 文件,但我不知道如何使用我的 2D 数据数组来做到这一点。
由于您需要等间距的网格,我将使用基于 vtk xml 的 ImageData 格式 (*.vti)。
来自http://www.cacr.caltech.edu/~slombey/asci/vtk/vtk_formats.simple.html:
"� ImageData — 每个 ImageData 片段在数据集的整个范围内指定其范围。点和单元格......由范围、原点和间距隐式描述。请注意,原点和间距在所有片段中都是恒定的,因此它们是指定为 ImageData XML 元素的属性,如下所示。
<VTKFile type=" ImageData" ...>
<ImageData WholeExtent=" x1 x2 y1 y2 z1 z2"
Origin=" x0 y0 z0" Spacing=" dx dy dz">
<Piece Extent=" x1 x2 y1 y2 z1 z2">
<PointData>...</ PointData>
<CellData>...</ CellData>
</ Piece>
</ ImageData>
</ VTKFile>
-End of link info" 请注意,只有 x0 y0 z0 和 dx dy dz 是真实的,WholeExtent 和 PieceExtent 指的是像素索引。
此示例将向您展示一个 10x10 像素的地图,温度从左下角到右上角。值与每个单元格相关联。您可以将此格式调整为您的 2D 数据。文件内容(注意我只使用 CellData):
例子.vti:
<VTKFile type="ImageData" version="0.1" byte_order="LittleEndian">
<ImageData WholeExtent=" 0 10 0 10 0 1" Origin=" 0 0 0" Spacing=" 1 1 0">
<Piece Extent=" 0 10 0 10 0 1">
<CellData Scalars="scalars">
<DataArray type="Float32" Name="Temperature[C]" format="ascii">
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
</DataArray>
</CellData>
</Piece>
</ImageData>
</VTKFile>
一种简单的方法是以 CSV 格式输出您的数据,每个网格正方形都有一个新行,即
....
grid_idx_i, grid_idx_j, grid_idx_k, val_ijk
....
然后,如果您将其加载到 paraview 中,您可以应用过滤器TableToPoints
以 paraview 可以处理的形式获取它。然后应用过滤器Delaunay2D
将其从点转换为单元格。完成此操作后,Contour
过滤器应该可以正常工作。
如果将数据存储为 CSV 中的直网格,也可能以某种方式加载数据,但我不确定。
编辑:对不起,我隐含地假设您试图在 paraview 中可视化数据。是这样吗?