我有一些Clojure代码可以生成常规的3D数据网格(体素)。我想把它写成一个文件,以后可以由Paraview读取(可能还有其他分析/可视化程序)。最简单的方法是什么?我的主要优先事项是简单性,但我也希望这也能很好地扩展,以便我可以将它用于大型数据集。我不需要处理比常规网格更复杂的东西。
答案 0 :(得分:2)
Paraview有一个“原始”输入格式,它只是一个二进制值序列,X变化最快,Z最慢。以下Clojure代码将以这种格式编写一系列双精度数:
(defn write-doubles [voxels path]
"write raw data stream - for paraview x must vary fastest."
(let [out (java.io.DataOutputStream.
(java.io.BufferedOutputStream.
(java.io.FileOutputStream. path)))]
(dorun (map (fn [v] (.writeDouble out v)) voxels))
(.close out)))
然后,您可以通过选择文件(使用.raw
扩展名)并输入轴的元数据(原点,步长,范围)将其读入Paraview。这不是一个很好的解决方案 - 在文件中也有更好的元数据 - 但它非常简单。它有效。
[注意 - DataOutputStream以big-endian格式生成数据]