vtkDataArray
<p><strong>vtkDataArray旨在跟踪数值,同时提供相关的元数据,例如 size、tupleSize、数据类型、数组名称、组件名称等。</strong></p>
<p>vtkDataArray 可用的结构类型</p>
<p><table><thead><tr><th>Type</th><th>Bytes</th><th>C type</th></tr></thead><tbody><tr><td>Int8Array</td><td>1 8-bit</td><td>int8_t</td></tr><tr><td>Uint8Array</td><td>1 8-bit</td><td>uint8_t</td></tr><tr><td>Uint8ClampedArray</td><td>1 8-bit</td><td>uint8_t</td></tr><tr><td>Int16Array</td><td>2 16-bit</td><td>int16_t</td></tr><tr><td>Uint16Array</td><td>2 16-bit</td><td>uint16_t</td></tr><tr><td>Int32Array</td><td>4 32-bit</td><td>int32_t</td></tr><tr><td>Uint32Array</td><td>4 32-bit</td><td>uint32_t</td></tr><tr><td>Float32Array</td><td>4 32-bit</td><td>float</td></tr><tr><td>Float64Array</td><td>8 64-bit</td><td>double</td></tr></tbody></table></p>
<p>此数据格式在内存中的表现如下:</p>
<pre><code class="language-json">{
vtkClass: 'vtkDataArray', // 类继承
name: 'Temperature', // name
numberOfComponents: 1, //描述数据数组中的每个元素包含多少个分量(components)确定每个数据点的维度。
size: 1024, // 数据大小
dataType: 'Float32Array', // 数据类型
buffer: new ArrayBuffer(), // Optional: Available if fetch from Network
values: new Float32Array(this.buffer),// 数据值
ranges: [ // 范围
{ min: -5.23, max: 25.7, component: 0, name: 'Scalar' },
],
}</code></pre>
<p>以上数据结构只是针对浏览器端,通过ajax获取的方式组织的数据格式,针对RFlow4 项目的数据结构是手工组装的这里以向量数据结构来描述一下:</p>
<pre><code class="language-json">{
&quot;classHierarchy&quot;: [ // 类继承层级
&quot;vtkObject&quot;,
&quot;vtkDataArray&quot;
],
&quot;dataType&quot;: &quot;Float32Array&quot;,// 数据类型
&quot;numberOfComponents&quot;: 3, // 数据分量3
&quot;rangeTuple&quot;: [ // 数据范围
0,
104857.23363292831
],
&quot;ranges&quot;: [// 每个分量下的数据范围 获取是会填充此数组
null,
null,
null,
{
&quot;min&quot;: 0,
&quot;max&quot;: 104857.23363292831
}
],
&quot;size&quot;: 798, // 数据长度
&quot;type&quot;: &quot;Float32&quot;,// 原始数据类型
&quot;values&quot;: [ // 值
-456.49957275390625,
-16809.234375,
0
...
],
&quot;vtkClass&quot;: &quot;vtkDataArray&quot; // 类
}</code></pre>