[Paraview] Question on Information Objects

Burlen Loring bloring at lbl.gov
Mon Apr 9 14:34:02 EDT 2012


Hi Joshua,

In your constructor you'd need to call

    this->SetNumberOfInputPorts(2);

You'd need to override

    FillInputPortInformation(int port, vtkInformation *info)

implement a switch on port number and do something like:

  288   switch (port)
  289     {
  290     // Vector feild data
  291     case 0:
  292       info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), 
"vtkUnstructuredGrid");
  293       break;
  294     // Seed points
  295     case 1:
  296       info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkTable");
  297       break;
  398     }

in request data you have to grab the table from the second information 
object.

Hope this helps
Burlen



On 04/09/2012 11:01 AM, Joshua Murphy wrote:
> Hello,
>
> So I am trying to figure out how to add an output port to my Reader, 
> but I am having difficulty.
>
> I am trying to create the new output as outlined in the email below, 
> but when I get to the point of adding the column to the table, 
> ParaView segfaults.
>
> Having looked through other emails on the list, it looks like the 
> output ports need to be configured somehow, but I am not sure how to 
> do that.
>
> My reader creates a vtkStructuredGrid for the data, and I need to add 
> the vtkTable for the meta-data… how do I configure the reader for 
> these two outputs?
>
>
> Currently, my getInformation (beginning) looks like this:
> ------------
>
>    vtkInformation  *outInfo  =  outputVector->GetInformationObject(0);
>    vtkStructuredGrid  *output  =  vtkStructuredGrid::SafeDownCast(
>          outInfo->Get(vtkDataObject::DATA_OBJECT()));
>    //TODO:  Add  Meta  Data  here  first
>    //       Use  VTK  Table  output  Port
>    //  Following  is  from  discussion  on  ParaView  Mailing  List
>    //-----------------------------------------------------------
>    //   315    vtkInformation  *outInfo;
>    //   316    vtkTable  *output;
>    //   317    vtkStringArray  *data;
>    //   318
>    //   319    //  output  port  1  ->  bw  data
>    //   320    outInfo=outputVector->GetInformationObject(0);
>    //   321    output
>    //   322      =  dynamic_cast<vtkTable*>(outInfo->Get(vtkDataObject::DATA_OBJECT()));
>    //   323    data=vtkStringArray::New();
>    //   324    data->SetName("BW  Data");
>    //   325    data->SetNumberOfComponents(1);
>    //   326    data->InsertNextValue(bwData.c_str());
>    //   327    output->AddColumn(data);
>    //   328    data->Delete();
>    //----------------------------------------------------------
>    vtkTable  *MetaDataOutput;
>    vtkStringArray  *MetaString;
>    //output  port  for  table  data
> MetaDataOutput  =  dynamic_cast<vtkTable*>(outInfo->Get(vtkDataObject::DATA_OBJECT()));
> MetaString  =  vtkStringArray::New();
> MetaString->SetName("Meta  Data");
> MetaString->InsertNextValue("This  is  a  Test");
> MetaString->InsertNextValue("This  is  Another  Test");
> //VVVVVVVVV  This  is  making  me  crash!  VVVVVVVVVVVV//
> //-----  Need  another  output  port!  How?  -------//
> MetaDataOutput->AddColumn(MetaString);
> MetaString->Delete();
> //structured  grid  below  here....
>    vtkStructuredGrid  *structOutput  =  vtkStructuredGrid::SafeDownCast(output);
>
> --------------
>
> The reader segfaults on MetaDataOutput->AddColumn(MetaString);
>
> If someone could point me in the correct direction (or simply tell me 
> how stupid I am being!, and then point in the correct direction!) I 
> would be very grateful!  I am sure I have a basic misunderstanding of 
> what is supposed to be happening here!
>
> -Josh
>
>
>
> From: burlen <burlen.loring at gmail.com <mailto:burlen.loring at gmail.com>>
> Date: Thu, 22 Mar 2012 22:41:37 -0600
> To: Joshua Murphy <joshua.murphy at lasp.colorado.edu 
> <mailto:joshua.murphy at lasp.colorado.edu>>
> Cc: "paraview at paraview.org <mailto:paraview at paraview.org>" 
> <paraview at paraview.org <mailto:paraview at paraview.org>>
> Subject: Re: [Paraview] Question on Information Objects
>
> hi, information keys are more for passing info between filters through 
> the pipeline. if all you want is to display a string, you could make a 
> second output port to your reader that produces a vtkTable and 
> populate it with the string. This could be displayed in the pv ui. 
> here's a quick example of what you'd do in your request data:
>
>
> 315   vtkInformation *outInfo;
> 316   vtkTable *output;
> 317   vtkStringArray *data;
> 318
> 319   // output port 1 -> bw data
> 320   outInfo=outputVector->GetInformationObject(0);
> 321   output
> 322     = 
> dynamic_cast<vtkTable*>(outInfo->Get(vtkDataObject::DATA_OBJECT()));
> 323   data=vtkStringArray::New();
> 324   data->SetName("BW Data");
> 325   data->SetNumberOfComponents(1);
> 326   data->InsertNextValue(bwData.c_str());
> 327   output->AddColumn(data);
> 328   data->Delete();
>
>
>
> On 03/22/2012 03:38 PM, Joshua Murphy wrote:
>> Hello,
>>
>> I am trying to get meta-data information from a file into ParaView. 
>>  I have successfully built the information key-value pairs in the 
>> information object in my reader, but I am uncertain how to get the 
>> data out on the ParaView side of things.
>>
>> Example:
>>
>> I want to get the Calendar date meta-data from my model file.  I 
>> added Key to the information object to the results info object.
>>
>> I set keys as follows:
>>
>>    request->AppendUnique(vtkExecutive::KEYS_TO_COPY(), vtkENLILMetaDataKeys::REFDATE_CAL());
>>
>>
>> I have a function to add the value to the key like such:
>>
>> void vtkENLILMetaDataKeys::populate_meta_data(vtkInformation* request, vtkInformationStringKey *key, char* value)
>> {
>>    request->Set(key, value);
>> }
>>
>>
>> I then add the values to the keys as follows:
>>
>>    vtkENLILMetaDataKeys::populate_meta_data(outInfo, vtkENLILMetaDataKeys::REFDATE_CAL(), temp);
>>
>> After I do this, I can successfully pull the placed data from the 
>> information object from within the reader.
>>
>> What I cannot figure out is how to access this object from within 
>> Paraview.
>>
>> My goal is to be able to include the calendar date (as text) in the 
>> render view.
>>
>> Can someone guide me in the correct direction on how to do this?  I 
>> am looking for possibly a python way of getting at this data.
>>
>> Thanks,
>>
>> Josh
>>
>>
>>
>> _______________________________________________
>> Powered bywww.kitware.com
>>
>> Visit other Kitware open-source projects athttp://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the ParaView Wiki at:http://paraview.org/Wiki/ParaView
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.paraview.org/mailman/listinfo/paraview
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20120409/a2285d62/attachment-0001.htm>


More information about the ParaView mailing list