2011-08-26 3 views
2

J'ai un code Clojure qui génère une grille de données 3D régulière (voxels). Je veux écrire cela dans un fichier qui peut être lu plus tard par Paraview (et, éventuellement, d'autres programmes d'analyse/visualisation). Quel est le moyen le plus simple de le faire? Ma priorité principale est la simplicité, mais j'aimerais aussi que cela évolue bien, afin que je puisse l'utiliser pour de grands ensembles de données. Je n'ai pas besoin de gérer quelque chose de plus complexe qu'une grille régulière.Quel format de données peut être écrit à partir de Java (Clojure) et lu par Paraview?

Répondre

2

Paraview a un format d'entrée "brut", qui est simplement une séquence de valeurs binaires, X étant le plus rapide, Z le plus lent. Le code Clojure suivant écrire une séquence de doubles dans ce format:

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

Vous pouvez ensuite lire dans Paraview en sélectionnant le fichier (utiliser une extension .raw) et en entrant les métadonnées (origine, étape, plage) pour les axes. Ce n'est pas une bonne solution - il vaudrait mieux avoir aussi les métadonnées dans le fichier - mais c'est très simple. Et il fonctionne.

[Note - DataOutputStream génère des données au format big-endian]

Questions connexes