2017-03-20 2 views
0

J'essaie d'utiliser la bibliothèque vtk sous python pour tracer des rationalisations pour un ensemble de données. J'ai besoin des positions le long des lignes de courant pour d'autres calculs. Cependant, je n'ai pas pu extraire les données de l'objet vtk StreamLine.Comment extraire des données de rationalisation à partir de l'objet StreamTracer de vtk

Je travaille sous IPython (Python 2.7.12) avec une librairie paraview version 5.0.1.

Actuellement, je suis chargement des données, la mise en place des semences et tracer les lignes de courant:

import paraview.simple as pv 
b0vtk = pv.LegacyVTKReader(FileNames=['B0.vtk']) 
streamTracer = pv.StreamTracer(Input=b0vtk, SeedType='Point Source') 
streamTracer.Vectors = ['POINTS', 'bfield'] 
streamTracer.MaximumStreamlineLength = 50 
streamTracer.SeedType.Center = [0, 0, 0] 
streamTracer.SeedType.NumberOfPoints = 1000 
streamTracer.SeedType.Radius = 1.6 
streamTracer.UpdatePipeline() 

La dernière étape semble tracer réellement les lignes de courant. Selon la documentation, cela devrait créer des polylignes (données de cellules) en sortie, qui sont les lignes de champ réelles, et des données ponctuelles avec les positions le long des lignes de champ. Cependant, je n'ai pas réussi à trouver cela n'importe où dans l'objet StreamLine. Les données cellulaires existantes semblent être différentes.

Répondre

1

Voici comment vous pouvez récupérer les données:

servermanager.Fetch(streamTracer) 

Soyez conscient que cela peut être tout à fait costy, car les données doivent être transférées du pvserver au client paraview. Bien sûr, dans intégré, cela n'a pas d'importance.

Plus d'info here