[Paraview] Getting String arrays out of Field Data
Joshua Murphy
Joshua.Murphy at lasp.colorado.edu
Thu Sep 6 13:44:41 EDT 2012
Thank you! I was using GetArray(), as I had no idea that
GetAbstractArray() even existed! (tab complete in the Python Shell doesn't
recognize it, and that is how I find most things as I learn how various
things work).
Again, Thank you very much! This solves a big problems for us!
-Josh
On 9/6/12 11:27 AM, "David Thompson" <david.thompson at kitware.com> wrote:
>Hi Joshua,
>
>Sorry, in my previous e-mail I forgot this was the ParaView and not VTK
>mailing list, so I posted a vtkpython script. What I said still applies
>if you are using the Python Programmable Filter, but of course you can
>use ParaView to load the dataset.
>
>pdi = self.GetPolyDataInput()
>pdo = self.GetPolyDataOutput()
>s=pdi.GetCellData().GetAbstractArray(0)
>print s.GetVariantValue(1).ToString()
># Just copy the input to make ParaView happy:
>pdo.DeepCopy( pdi )
>
>This works for me with the political.vtp dataset
>
>
>http://vtk.org/gitweb?p=VTKData.git;a=blob_plain;f=Data/political.vtp;hb=H
>EAD
>
>
>Does that address your problem? Or are you writing client-side python
>scripts using the simple interface to retrieve metadata from the server?
>
> David
>
>>> I have written a custom filter for Heliospheric data, and I am placing
>>>the model metadata into the Field Data section of ParaView.
>>>
>>> Many of the metadata items are strings. I can view these strings just
>>>fine in Spread Sheet view, but anytime I try to get them out of Field
>>>Data via python, I get a null value return. Doubles and Ints return
>>>just fine, but I cannot seem to figure out how to get the strings.
>>>
>>> Can someone point me in the right direction for retrieving the strings
>>>from Field Data via Python?
>>
>> What method are you using to get the array from the
>>vtkDataSetAttributes instance that holds the field data? You need to use
>>GetAbstractArray instead of GetArray. Below is a small example that gets
>>string values from cell data on the political.vtp file included in
>>VTKData. If you have an example file with strings in field data, I can
>>take a look at that, too. It should be as simple as replacing the
>>GetCellData() method with GetFieldData().
>>
>> David
>>
>> from vtk import *
>> rdr = vtkXMLPolyDataReader()
>> rdr.SetFileName( '/path/to/VTKData/Data/political.vtp' )
>> rdr.Update();
>> mesh = rdr.GetOutput()
>> cd = mesh.GetCellData()
>> print 'Should have 3 cell data arrays', cd.GetNumberOfArrays()
>> cd.GetArray(0) # Returns None
>> sa = cd.GetAbstractArray(0)
>> print 'Array has %d tuples (should be 980)' % sa.GetNumberOfTuples()
>> print 'Should be Albania:', sa.GetVariantValue(1).ToString()
>>
>
More information about the ParaView
mailing list