私は古い形式のvtkファイル(私はその構造化されていないグリッドだと思います)を与えられています。私は知っているので、代わりに.pyファイルを読み込み、.npyファイルを出力したいと思います。それに対処する方法。Pythonで.vtkファイルを読む
ファイルはATHENAのダンプファイルで、密度、速度、磁場が座標とともに表示されます。
私は非常に多くの手続きのプログラマーですので、すべてのこれらのオブジェクトは混乱している...
私は古い形式のvtkファイル(私はその構造化されていないグリッドだと思います)を与えられています。私は知っているので、代わりに.pyファイルを読み込み、.npyファイルを出力したいと思います。それに対処する方法。Pythonで.vtkファイルを読む
ファイルはATHENAのダンプファイルで、密度、速度、磁場が座標とともに表示されます。
私は非常に多くの手続きのプログラマーですので、すべてのこれらのオブジェクトは混乱している...
は、あなたがあるParaViewを使用してみましたか? (http://www.paraview.org/)舞台裏で何が起こっているのかを視覚的に把握し、さまざまな方法でファイルを出力することができます。あなたのデータが何であるかという手がかりがないので、私はこれを提案します。 http://www.vtk.org/Wiki/VTK/Examples/Pythonにも請求書に合うかもしれない例があります。個人的には、私はパラボラと遊びをしてそこから行くだろう。ここで
私は以前にparaviewを使っていましたが、それはVISITと呼ばれていました。しかし、私はファイル内の内容を分析し、fftなどの作業を行う必要があるため、視覚化するだけでは十分ではありません。 –
はVTKのPython SDKを使用してVTKファイルからnumpyの配列にポリゴンデータを読み込むスクリプトです:ここで
import sys
import numpy
import vtk
reader = vtk.vtkPolyDataReader()
reader.SetFileName(sys.argv[1])
reader.Update()
polydata = reader.GetOutput()
for i in range(polydata.GetNumberOfCells()):
pts = polydata.GetCell(i).GetPoints()
np_pts = numpy.array([pts.GetPoint(i) for i in range(pts.GetNumberOfPoints())])
print np_pts
vtkPolyDataReaderの代わりにvtkDataSetReader()を使用してGetOutput()ステージにアクセスできましたが、情報を取得する方法についてはまだ混乱しています。 GetNumberOfPointsとGetNumberOfCellsは、配列がどれくらい大きくなければならないと思うかわかりますが、すべての変数を引き出す方法はまだ分かりません。 vtkに正確に何が含まれているか、どのような形式で情報を取得する方法はありますか?理解できる方法で? –
http://people.sc.fsu.edu/~jburkardt/data/vtk/vtk.htmlのファイルをここで選択すると、その形式を抽出するのに役立ちます。非常に多くの異なるフォーマットがあります。 – jterrace
reader.IsFileStructuredPoints()は1を返します。他のオプションは0を返します。したがって、私は手足の外に出て、Structured Pointsの従来のvtkを呼び出しています。 –
は私が思いついた解決策である、トリックは)(ReadAllVectorsOnオンにされました。
import numpy
from vtk import vtkStructuredPointsReader
from vtk.util import numpy_support as VN
reader = vtkStructuredPointsReader()
reader.SetFileName(filename)
reader.ReadAllVectorsOn()
reader.ReadAllScalarsOn()
reader.Update()
data = reader.GetOutput()
dim = data.GetDimensions()
vec = list(dim)
vec = [i-1 for i in dim]
vec.append(3)
u = VN.vtk_to_numpy(data.GetCellData().GetArray('velocity'))
b = VN.vtk_to_numpy(data.GetCellData().GetArray('cell_centered_B'))
u = u.reshape(vec,order='F')
b = b.reshape(vec,order='F')
x = zeros(data.GetNumberOfPoints())
y = zeros(data.GetNumberOfPoints())
z = zeros(data.GetNumberOfPoints())
for i in range(data.GetNumberOfPoints()):
x[i],y[i],z[i] = data.GetPoint(i)
x = x.reshape(dim,order='F')
y = y.reshape(dim,order='F')
z = z.reshape(dim,order='F')
その最新のリリースでは、YTプロジェクトhttp://yt-project.org/は、すべての手段によって、これはパイソンを使用したシミュレーションデータを分析するための方法であることを意味し、ATHENAのサポートが含まれていることを言及しなければなりません。
meshio(私のプロジェクト)VTKフォーマットを知っている、あなたは、単に
pip install meshio
、その後
import meshio
points, cells, point_data, cell_data, field_data = meshio.read('file.vtk')
あなたは、このファイルのデータのサンプルを投稿できることができるように? –
書き込み用に[PyEVTK](https://bitbucket.org/pauloh/pyevtk)がありますが、読み込みをサポートしていません – jterrace
ああ、jterraceのリンクから、バイナリ形式だと分かります。ブリー。 –