Какой формат данных может быть написан с Java (Clojure) и прочитан Paraview? - PullRequest
2 голосов
/ 26 августа 2011

У меня есть некоторый код Clojure, который генерирует регулярную трехмерную сетку данных (вокселей). Я хочу записать это в файл, который позже может быть прочитан Paraview (и, возможно, другими программами анализа / визуализации). Какой самый простой способ сделать это? Мой главный приоритет - простота, но я также хотел бы, чтобы это также хорошо масштабировалось, чтобы я мог использовать его для больших наборов данных. Мне не нужно обрабатывать что-то более сложное, чем обычная сетка.

1 Ответ

2 голосов
/ 26 августа 2011

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)))

Затем вы можете прочитать это в Paraview, выбрав файл (используйте расширение .raw) и введя метаданные (начало координат, шаг, диапазон) для осей. Это не очень хорошее решение - было бы лучше иметь метаданные в файле, но это очень просто. И это работает.

[Примечание. DataOutputStream генерирует данные в формате с прямым порядком байтов]

...