# MI - Fimex: MetNoFimex::CDMReader Class Reference

# MetNoFimex::CDMReader Class Reference

Basic interface for CDM reading and manipulation classes. More...

`#include <CDMReader.h>`

Inheritance diagram for MetNoFimex::CDMReader:

List of all members.

## Public Member Functions

| CDMReader ()
virtual | ~CDMReader ()
virtual const CDM & | getCDM () const
virtual boost::shared_ptr< Data > | getDataSlice (const std::string &varName, size_t unLimDimPos)=0 throw (CDMException)
| data-reading function to be called from the CDMWriter
virtual boost::shared_ptr< Data > | getDataSlice (const std::string &varName, const SliceBuilder &sb) throw (CDMException)
| data-reading function to be called from the CDMWriter
virtual boost::shared_ptr< Data > | getData (const std::string &varName) throw (CDMException)
| data-reading function to be called from the CDMWriter
virtual boost::shared_ptr< Data > | getScaledDataSlice (const std::string &varName, size_t unLimDimPos) throw (CDMException)
| read and scale a dataslice
virtual boost::shared_ptr< Data > | getScaledDataSliceInUnit (const std::string &varName, const std::string &unit, size_t unLimDimPos) throw (CDMException)
| read and scale a dataslice to a known unit
virtual boost::shared_ptr< Data > | getScaledDataSlice (const std::string &varName, const SliceBuilder &sb) throw (CDMException)
| read and scale a dataslice
virtual boost::shared_ptr< Data > | getScaledDataSliceInUnit (const std::string &varName, const std::string &unit, const SliceBuilder &sb) throw (CDMException)
| read and scale a dataslice to a set unit
virtual boost::shared_ptr< Data > | getScaledData (const std::string &varName) throw (CDMException)
| read and scale the complete data
virtual boost::shared_ptr< Data > | getScaledDataInUnit (const std::string &varName, const std::string &unit) throw (CDMException)
| read and scale the complete data to a set unit

## Protected Member Functions

virtual boost::shared_ptr< Data > | getDataSliceFromMemory (const CDMVariable &variable, size_t unLimDimPos=0) throw (CDMException)

## Protected Attributes

boost::shared_ptr< CDM > | cdm_

## Detailed Description

Basic interface for CDM reading and manipulation classes.

The CDMReader is the basic interface for reading and manipulation of the cdm datastructure. The CDMWriter will work with an implementation of the CDMReader and read the included data in the cdm or the data provided through the implementation of the CDMReader#getDataSlice

See also:
  FeltCDMReader

## Constructor & Destructor Documentation

MetNoFimex::CDMReader::CDMReader | ( |  | ) |

virtual MetNoFimex::CDMReader::~CDMReader | ( |  | ) | `[inline, virtual]`

## Member Function Documentation

virtual const CDM& MetNoFimex::CDMReader::getCDM | ( |  | ) | const`[virtual]`

Retrieve the cdm structure of this reader.

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getDataSlice | ( | const std::string & | varName,
|  | size_t | unLimDimPos |
| ) |  |  | throw (CDMException)`[pure virtual]`

data-reading function to be called from the CDMWriter

This methods needs to be implemented by the CDMReader. It should provide the data for each variable, either by reading from disk, converting from another CDMReader or reading from an in-memory data-section.

This function should retrieve the whole data for a dataset without unlimited dimension if the unLimDimPos == 0.

Parameters:

  | varName | name of the variable to read
  | unLimDimPos | (optional) if the variable contains a unlimited dimension (max one allowed) an slice of this position is returned

Implemented in MetNoFimex::C_CDMReader, MetNoFimex::CDMExtractor, MetNoFimex::CDMInterpolator, MetNoFimex::FeltCDMReader2, MetNoFimex::GribCDMReader, MetNoFimex::NcmlCDMReader, and MetNoFimex::NetCDF_CDMReader.

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getDataSlice | ( | const std::string & | varName,
|  | const SliceBuilder & | sb |
| ) |  |  | throw (CDMException)`[virtual]`

data-reading function to be called from the CDMWriter

Parameters:

  | varName | name of the variable to read
  | sb | a SliceBuilder generated from this CDMReaders CDM This method has a default implementation depending on getDataSlice(varName, unLimDimPos), but should be implemented for performance reasons.

Reimplemented in MetNoFimex::NetCDF_CDMReader.

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getData | ( | const std::string & | varName | ) | throw (CDMException)`[virtual]`

data-reading function to be called from the CDMWriter

The getData function is a convenient function to retrieve all data from a file. It is implemented using getDataSlice. It should be used with care, since a complete variable might be bigger than available memory.

Parameters:

  | varName | name of the variable to read

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getScaledDataSlice | ( | const std::string & | varName,
|  | size_t | unLimDimPos |
| ) |  |  | throw (CDMException)`[virtual]`

read and scale a dataslice

This functions uses getDataSlice internally. It tries to read "scale_factor" "add_offset" and "_FillValue" and apply the scaling to the read data. Output-datatype will be double, output _FillValue will be MIFI_UNDEFINED_D

Parameters:

  | varName | name of the variable to read
  | unLimDimPos | (optional) if the variable contains a unlimited dimension (max one allowed) an slice of this position is returned

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getScaledDataSliceInUnit | ( | const std::string & | varName,
|  | const std::string & | unit,
|  | size_t | unLimDimPos |
| ) |  |  | throw (CDMException)`[virtual]`

read and scale a dataslice to a known unit

This functions uses getDataSlice internally. It tries to read "scale_factor" "add_offset" and "_FillValue" and apply the scaling to the read data. Output-datatype will be double, output _FillValue will be MIFI_UNDEFINED_D. The data will be converted to match unit.

Parameters:

  | varName | name of the variable to read
  | unit | unit-string
  | unLimDimPos | (optional) if the variable contains a unlimited dimension (max one allowed) an slice of this position is returned

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getScaledDataSlice | ( | const std::string & | varName,
|  | const SliceBuilder & | sb |
| ) |  |  | throw (CDMException)`[virtual]`

read and scale a dataslice

Parameters:

  | varName | name of the variable to read
  | sb | SliceBuilder to restrict the data

See also:
  getScaledDataSlice(varName, unLimDimPos)

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getScaledDataSliceInUnit | ( | const std::string & | varName,
|  | const std::string & | unit,
|  | const SliceBuilder & | sb |
| ) |  |  | throw (CDMException)`[virtual]`

read and scale a dataslice to a set unit

Parameters:

  | varName | name of the variable to read
  | unit | unit string to scale to
  | sb | SliceBuilder to restrict the data

See also:
  getScaledDataSlice(varName, unLimDimPos)

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getScaledData | ( | const std::string & | varName | ) | throw (CDMException)`[virtual]`

read and scale the complete data

This functions uses getData internally. It tries to read "scale_factor" "add_offset" and "_FillValue" and apply the scaling to the read data. Output-datatype will be double, output _FillValue will be MIFI_UNDEFINED_D.

Parameters:

  | varName | name of the variable to read

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getScaledDataInUnit | ( | const std::string & | varName,
|  | const std::string & | unit |
| ) |  |  | throw (CDMException)`[virtual]`

read and scale the complete data to a set unit

This functions uses getData internally. It tries to read "scale_factor" "add_offset" and "_FillValue" and apply the scaling to the read data. Output-datatype will be double, output _FillValue will be MIFI_UNDEFINED_D. The data will be converted to match unit.

Parameters:

  | varName | name of the variable to read
  | unit | the unit-string to convert the data to

virtual boost::shared_ptr<Data> MetNoFimex::CDMReader::getDataSliceFromMemory | ( | const CDMVariable & | variable,
|  | size_t | unLimDimPos = `0` |
| ) |  |  | throw (CDMException)`[protected, virtual]`

Read the data from the variable.hasData() and select the correct unLimDimPos. This function should be used internally from getDataSlice.

Parameters:

  | variable | the variable to read data from
  | unLimDimPos | (optional) the unlimited position

## Member Data Documentation

boost::shared_ptr<CDM> MetNoFimex::CDMReader::cdm_ `[protected]`

The documentation for this class was generated from the following file:

- include/fimex/CDMReader.h