VTK
vtkNetCDFReader.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 /*=========================================================================
3 
4  Program: Visualization Toolkit
5  Module: vtkNetCDFReader.h
6 
7  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
8  All rights reserved.
9  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
10 
11  This software is distributed WITHOUT ANY WARRANTY; without even
12  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13  PURPOSE. See the above copyright notice for more information.
14 
15 =========================================================================*/
16 
17 /*-------------------------------------------------------------------------
18  Copyright 2008 Sandia Corporation.
19  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
20  the U.S. Government retains certain rights in this software.
21 -------------------------------------------------------------------------*/
22 
34 #ifndef vtkNetCDFReader_h
35 #define vtkNetCDFReader_h
36 
37 #include "vtkIONetCDFModule.h" // For export macro
38 #include "vtkDataObjectAlgorithm.h"
39 
40 #include "vtkSmartPointer.h" // For ivars
41 #include <string> //For std::string
42 
44 class vtkDataSet;
45 class vtkDoubleArray;
46 class vtkIntArray;
47 class vtkStdString;
48 class vtkStringArray;
49 class vtkNetCDFReaderPrivate;
50 
51 class VTKIONETCDF_EXPORT vtkNetCDFReader : public vtkDataObjectAlgorithm
52 {
53 public:
55  static vtkNetCDFReader *New();
56  virtual void PrintSelf(ostream &os, vtkIndent indent);
57 
58  virtual void SetFileName(const char *filename);
59  vtkGetStringMacro(FileName);
60 
66 
67 // // Description:
68 // // Get the data array selection tables used to configure which variables to
69 // // load.
70 // vtkGetObjectMacro(VariableArraySelection, vtkDataArraySelection);
71 
73 
77  virtual const char *GetVariableArrayName(int idx);
78  virtual int GetVariableArrayStatus(const char *name);
79  virtual void SetVariableArrayStatus(const char *name, int status);
81 
88 
90 
96  vtkGetObjectMacro(VariableDimensions, vtkStringArray);
98 
106  virtual void SetDimensions(const char *dimensions);
107 
109 
116  vtkGetObjectMacro(AllDimensions, vtkStringArray);
118 
120 
129  vtkGetMacro(ReplaceFillValueWithNan, int);
130  vtkSetMacro(ReplaceFillValueWithNan, int);
131  vtkBooleanMacro(ReplaceFillValueWithNan, int);
133 
135 
140  vtkGetStringMacro(TimeUnits);
141  vtkGetStringMacro(Calendar);
143 
147  std::string QueryArrayUnits(const char *ArrayName);
148 
149 protected:
152 
153  char *FileName;
156 
161 
163 
165 
170 
175 
177 
178  int WholeExtent[6];
179 
180  virtual int RequestDataObject(vtkInformation *request,
181  vtkInformationVector **inputVector,
182  vtkInformationVector *outputVector);
183 
184  virtual int RequestInformation(vtkInformation *request,
185  vtkInformationVector **inputVector,
186  vtkInformationVector *outputVector);
187 
188  virtual int RequestData(vtkInformation *request,
189  vtkInformationVector **inputVector,
190  vtkInformationVector *outputVector);
191 
195  static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid,
196  void *clientdata, void *calldata);
197 
202  vtkStdString DescribeDimensions(int ncFD, const int *dimIds, int numDims);
203 
207  virtual int ReadMetaData(int ncFD);
208 
212  virtual int FillVariableDimensions(int ncFD);
213 
221  virtual int IsTimeDimension(int ncFD, int dimId);
222 
230  virtual vtkSmartPointer<vtkDoubleArray> GetTimeValues(int ncFD, int dimId);
231 
238  virtual bool DimensionsAreForPointData(vtkIntArray *vtkNotUsed(dimensions)) {
239  return true;
240  }
241 
248  virtual void GetUpdateExtentForOutput(vtkDataSet *output, int extent[6]);
249 
254  virtual int LoadVariable(int ncFD, const char *varName, double time,
255  vtkDataSet *output);
256 
257 private:
258  vtkNetCDFReader(const vtkNetCDFReader &) VTK_DELETE_FUNCTION;
259  void operator=(const vtkNetCDFReader &) VTK_DELETE_FUNCTION;
260 
261  int UpdateExtent[6];
262  char *TimeUnits;
263  char *Calendar;
264  vtkNetCDFReaderPrivate *Private;
265 };
266 
267 #endif //vtkNetCDFReader_h
vtkNetCDFReader::GetVariableArrayName
virtual const char * GetVariableArrayName(int idx)
vtkNetCDFReader::LoadingDimensions
vtkSmartPointer< vtkIntArray > LoadingDimensions
The dimension ids of the arrays being loaded into the data.
Definition: vtkNetCDFReader.h:160
vtkNetCDFReader::LoadVariable
virtual int LoadVariable(int ncFD, const char *varName, double time, vtkDataSet *output)
Load the variable at the given time into the given data set.
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:42
vtkNetCDFReader
A superclass for reading netCDF files.
Definition: vtkNetCDFReader.h:52
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:36
vtkDataObjectAlgorithm
Superclass for algorithms that produce only data object as output.
Definition: vtkDataObjectAlgorithm.h:44
vtkNetCDFReader::FileName
char * FileName
Definition: vtkNetCDFReader.h:153
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:60
vtkSmartPointer< vtkIntArray >
vtkNetCDFReader::GetVariableArrayStatus
virtual int GetVariableArrayStatus(const char *name)
vtkNetCDFReader::AllVariableArrayNames
vtkSmartPointer< vtkStringArray > AllVariableArrayNames
Definition: vtkNetCDFReader.h:164
vtkNetCDFReader::GetNumberOfVariableArrays
virtual int GetNumberOfVariableArrays()
Variable array selection.
vtkX3D::time
@ time
Definition: vtkX3D.h:497
vtkNetCDFReader::New
static vtkNetCDFReader * New()
vtkNetCDFReader::SelectionModifiedCallback
static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
Callback registered with the VariableArraySelection.
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:35
vtkNetCDFReader::DescribeDimensions
vtkStdString DescribeDimensions(int ncFD, const int *dimIds, int numDims)
Convenience function for getting a string that describes a set of dimensions.
vtkNetCDFReader::FileNameMTime
vtkTimeStamp FileNameMTime
Definition: vtkNetCDFReader.h:154
vtkNetCDFReader::~vtkNetCDFReader
~vtkNetCDFReader()
vtkNetCDFReader::ReplaceFillValueWithNan
int ReplaceFillValueWithNan
Definition: vtkNetCDFReader.h:176
vtkNetCDFReader::GetAllVariableArrayNames
virtual vtkStringArray * GetAllVariableArrayNames()
Convenience method to get a list of variable arrays.
vtkNetCDFReader::SetFileName
virtual void SetFileName(const char *filename)
vtkNetCDFReader::SetDimensions
virtual void SetDimensions(const char *dimensions)
Loads the grid with the given dimensions.
vtkNetCDFReader::RequestDataObject
virtual int RequestDataObject(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
vtkNetCDFReader::vtkNetCDFReader
vtkNetCDFReader()
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:46
vtkNetCDFReader::GetTimeValues
virtual vtkSmartPointer< vtkDoubleArray > GetTimeValues(int ncFD, int dimId)
Given a dimension already determined to be a time dimension (via a call to IsTimeDimension) returns a...
vtkSmartPointer.h
vtkNetCDFReader::VariableArraySelection
vtkSmartPointer< vtkDataArraySelection > VariableArraySelection
Definition: vtkNetCDFReader.h:162
vtkGetStringMacro
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
vtkX3D::name
@ name
Definition: vtkX3D.h:219
vtkNetCDFReader::IsTimeDimension
virtual int IsTimeDimension(int ncFD, int dimId)
Determines whether the given variable is a time dimension.
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:63
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:87
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkX3D::string
@ string
Definition: vtkX3D.h:490
vtkNetCDFReader::MetaDataMTime
vtkTimeStamp MetaDataMTime
Definition: vtkNetCDFReader.h:155
vtkNetCDFReader::AllDimensions
vtkStringArray * AllDimensions
Placeholder for structure returned from GetAllDimensions().
Definition: vtkNetCDFReader.h:174
vtkNetCDFReader::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkNetCDFReader::GetUpdateExtentForOutput
virtual void GetUpdateExtentForOutput(vtkDataSet *output, int extent[6])
Retrieves the update extent for the output object.
vtkNetCDFReader::VariableDimensions
vtkStringArray * VariableDimensions
Placeholder for structure returned from GetVariableDimensions().
Definition: vtkNetCDFReader.h:169
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:43
vtkNetCDFReader::ReadMetaData
virtual int ReadMetaData(int ncFD)
Reads meta data and populates ivars.
vtkNetCDFReader::DimensionsAreForPointData
virtual bool DimensionsAreForPointData(vtkIntArray *vtkNotUsed(dimensions))
Called internally to determine whether a variable with the given set of dimensions should be loaded a...
Definition: vtkNetCDFReader.h:238
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:42
vtkX3D::extent
@ extent
Definition: vtkX3D.h:345
vtkDataObjectAlgorithm.h
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:49
vtkNetCDFReader::QueryArrayUnits
std::string QueryArrayUnits(const char *ArrayName)
Get units attached to a particular array in the netcdf file.
vtkNetCDFReader::RequestInformation
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
vtkNetCDFReader::FillVariableDimensions
virtual int FillVariableDimensions(int ncFD)
Fills the VariableDimensions array.
vtkNetCDFReader::SetVariableArrayStatus
virtual void SetVariableArrayStatus(const char *name, int status)
vtkNetCDFReader::UpdateMetaData
int UpdateMetaData()
Update the meta data from the current file.
vtkNetCDFReader::RequestData
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)