如何使用 vtk 的 XML 格式在 StructuredGrid 的单元格数据中包含字符串属性?
How to include string attributes in the cell data of a StructuredGrid using vtk's XML format?
我一直在尝试使用 vtk 的 XML 格式将字符串属性包含到 StructuredGrid 单元格的 CellData 中。
我想为使用以下 xml 代码定义的单元格包含一个名为“Container”且值为“AoS”的属性:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<VTKFile byte_order="LittleEndian" type="StructuredGrid" version="0.1">
<StructuredGrid WholeExtent="0 1 0 1 0 1">
<Piece Extent="0 1 0 1 0 1">
<PointData/>
<CellData Scalars="DomainId" Fields="Container">
<DataArray type="Int32" Name="DomainId" format="ascii">
0
</DataArray>
<DataArray type="String" Name="Container" format="ascii">
AoS
</DataArray>
</CellData>
<Points>
<DataArray type="Float32" NumberOfComponents="3" format="ascii">
0 0 0
2 0 0
0 4 0
2 4 0
0 0 3
2 0 3
0 4 3
2 4 3
</DataArray>
</Points>
</Piece>
</StructuredGrid>
</VTKFile>
尝试在 Paraview 中显示此单元格时,出现以下错误:
无法从片段 0 中的 PointData 读取单元格数据数组“Container”。元素中的数据数组太短
我在 xml 代码中使用的 CellData 属性“Fields”只是一个随意的猜测,甚至可能不存在。将容器移动到“标量”不起作用,我找不到另一个合适的 CellData 属性来放入它。
我想在 Paraviews SpreadsheetView 中看到的是这样的:
Example created using legacy vtk format
我花了几个小时试图解决这个问题。我不知道的是,哪个 CellData 属性指定用于字符串,DataArray 是否是要使用的正确对象,如果是,它需要哪些属性。
或者我尝试使用 StringArray 而不是 DataArray 但也无法使其工作。
我还尝试使用 FieldData 来包含字符串属性,但同样没有成功。
提前感谢您的帮助!
你应该把你的字符串写成一个以 null 结尾的 ascii 字符列表:
<CellData>
<Array type="String" Name="Container" format="ascii">
65 111 83 0
</Array>
</CellData>
我一直在尝试使用 vtk 的 XML 格式将字符串属性包含到 StructuredGrid 单元格的 CellData 中。 我想为使用以下 xml 代码定义的单元格包含一个名为“Container”且值为“AoS”的属性:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<VTKFile byte_order="LittleEndian" type="StructuredGrid" version="0.1">
<StructuredGrid WholeExtent="0 1 0 1 0 1">
<Piece Extent="0 1 0 1 0 1">
<PointData/>
<CellData Scalars="DomainId" Fields="Container">
<DataArray type="Int32" Name="DomainId" format="ascii">
0
</DataArray>
<DataArray type="String" Name="Container" format="ascii">
AoS
</DataArray>
</CellData>
<Points>
<DataArray type="Float32" NumberOfComponents="3" format="ascii">
0 0 0
2 0 0
0 4 0
2 4 0
0 0 3
2 0 3
0 4 3
2 4 3
</DataArray>
</Points>
</Piece>
</StructuredGrid>
</VTKFile>
尝试在 Paraview 中显示此单元格时,出现以下错误: 无法从片段 0 中的 PointData 读取单元格数据数组“Container”。元素中的数据数组太短
我在 xml 代码中使用的 CellData 属性“Fields”只是一个随意的猜测,甚至可能不存在。将容器移动到“标量”不起作用,我找不到另一个合适的 CellData 属性来放入它。
我想在 Paraviews SpreadsheetView 中看到的是这样的: Example created using legacy vtk format
我花了几个小时试图解决这个问题。我不知道的是,哪个 CellData 属性指定用于字符串,DataArray 是否是要使用的正确对象,如果是,它需要哪些属性。 或者我尝试使用 StringArray 而不是 DataArray 但也无法使其工作。
我还尝试使用 FieldData 来包含字符串属性,但同样没有成功。
提前感谢您的帮助!
你应该把你的字符串写成一个以 null 结尾的 ascii 字符列表:
<CellData>
<Array type="String" Name="Container" format="ascii">
65 111 83 0
</Array>
</CellData>