# MI - Fimex: MetNoFimex Namespace Reference

# MetNoFimex Namespace Reference

## Classes

class | C_CDMReader
class | CachedForwardInterpolation
class | CachedInterpolationInterface
class | CachedInterpolation
class | CachedVectorReprojection
class | CDM
| Data structure of the Common Data Model. More...
class | CDMAttribute
class | CDMDimension
class | CDMException
class | CDMExtractor
class | CDMFileReaderFactory
class | CDMInterpolator
class | CDMNamedEntity
struct | CDMNameCompare
class | CDMNameEqual
class | CDMNameEqualPtr
class | CDMQualityExtractor
| Extract data with defined quality status. More...
class | CDMReader
| Basic interface for CDM reading and manipulation classes. More...
class | CDMTimeInterpolator
class | CDMVariable
class | CDMWriter
class | CoordinateAxis
class | CoordinateSystem
struct | CompleteCoordinateSystemForComparator
class | LambertConformalConicProjection
class | LatitudeLongitudeProjection
class | MercatorProjection
class | PolarStereographicProjection
class | Projection
class | ProjectionImpl
class | RotatedLatitudeLongitudeProjection
class | StereographicProjection
class | TransverseMercatorProjection
class | Data
class | DataImpl
class | DataTypeChanger
class | FeltCDMReader
class | FeltCDMReader2
class | GribApiCDMWriter
class | GribApiCDMWriter_Impl1
class | GribApiCDMWriter_Impl2
class | GribApiCDMWriter_ImplAbstract
class | GribCDMReader
class | GribFileMessage
class | GribFileMessageEqualTime
| Functor to find Messages with equal time. More...
class | GribFileMessageEqualLevelTime
| Functor to find messages with equal level and time. More...
class | GribFileIndex
class | GridDefinition
class | Logger
class | NcmlCDMReader
class | NetCDF_CDMReader
class | NetCDF_CDMWriter
class | Null_CDMWriter
class | ReplaceStringObject
class | ReplaceStringTimeObject
class | SliceBuilder
class | SpatialAxisSpec
class | TimeLevelDataSliceFetcher
| read a slice of a given time/level combination from a cdmReader More...
class | TimeSpec
class | FimexTime
class | TimeUnit
class | UnitException
class | Units
struct | staticCast
class | ScaleValue
class | ChangeMissingValue
class | XMLDoc

## Typedefs

typedef boost::shared_ptr< Logger > | LoggerPtr
typedef long | epoch_seconds
typedef boost::shared_ptr < xmlXPathObject > | XPathObjPtr

## Enumerations

enum | CDMDataType { CDM_NAT = 0, CDM_CHAR, CDM_SHORT, CDM_INT, CDM_FLOAT, CDM_DOUBLE, CDM_STRING }

## Functions

| DEPRECATED (std::vector< CDMAttribute > projStringToAttributes(std::string projStr))
| convert a proj4 string to a list of CDMAttributes usable for CF-1.0 projection variable
| DEPRECATED (std::string attributesToProjString(const std::vector< CDMAttribute > &attrs))
| convert attributes of a projection-variable to a projString
CDMDataType | string2datatype (const std::string &s)
| translate float/string/... to the appropriate CDMDataType
std::string | datatype2string (CDMDataType type)
boost::posix_time::ptime | getUniqueForecastReferenceTime (boost::shared_ptr< CDMReader > reader)
std::ostream & | operator<< (std::ostream &out, CoordinateAxis ca)
std::ostream & | operator<< (std::ostream &out, CoordinateAxis::AxisType t)
std::ostream & | operator<< (std::ostream &out, const CoordinateSystem &p)
std::vector< boost::shared_ptr < const CoordinateSystem > > | listCoordinateSystems (const CDM &cdm)
std::ostream & | operator<< (std::ostream &out, const Projection &proj)
boost::shared_ptr< Data > | createData (CDMDataType datatype, size_t length, double val=0) throw (CDMException)
| create a Data-pointer of the datatype
boost::shared_ptr< Data > | createDataSlice (CDMDataType datatype, const Data &data, size_t dataStartPos, size_t dataSize) throw (CDMException)
| create a one-dimensional dataslice from another Data object
template<typename T1, typename T2>
boost::shared_array< T1 > | duplicateArrayType (const boost::shared_array< T2 > &inData, long length)
| create a new shared array with a different type using static_cast
template<typename T1, typename T2>
const boost::shared_array< T1 > | constConvertArrayType (const boost::shared_array< T2 > &inData, long length)
| return a shared array of this data, possibly pointer to internal data
template<class InputIterator>
boost::shared_ptr< Data > | createData (CDMDataType datatype, InputIterator first, InputIterator last) throw (CDMException)
| create a Data-pointer of the datatype and fill with the data from the iterator
template<typename C>
void | recursiveCopyMultiDimData (C **orgData, C **newData, const std::vector< size_t > &orgDimSize, const std::vector< size_t > &orgSliceSize, const std::vector< size_t > &newStart, const std::vector< size_t > &newSize, size_t currentDim)
template<typename OUT, typename IN>
boost::shared_array< OUT > | convertArrayType (const boost::shared_array< IN > &inData, size_t length, double oldFill, double oldScale, double oldOffset, double newFill, double newScale, double newOffset)
boost::shared_ptr< FeltCDMReader2 > | getFeltReader (std::string filename, std::string configFilename)
| convenience function to retrieve a reader as shared_ptr instead of calling new
std::ostream & | operator<< (std::ostream &os, const GribFileMessage &gfm)
| outputstream for a GribFileMessage
std::ostream & | operator<< (std::ostream &os, const GribFileIndex &gfm)
| outputstream for a GribFileIndex
GridDefinition::Orientation | gribGetGridOrientation (boost::shared_ptr< grib_handle > gh)
Logger::LogLevel | defaultLogLevel ()
void | defaultLogLevel (Logger::LogLevel)
LoggerPtr | getLogger (const std::string &className)
std::ostream & | operator<< (std::ostream &out, const FimexTime &fTime)
| minimum FimexTime
FimexTime | string2FimexTime (const std::string &str) throw (CDMException)
void | handleUdUnitError (int unitErrCode, const std::string &message="") throw (UnitException)
int | round (double num)
std::string | trim (const std::string &str)
template<class InputIterator>
std::string | join (InputIterator start, InputIterator end, std::string delim=",")
template<class InputIterator>
std::string | joinPtr (InputIterator start, InputIterator end, std::string delim=",")
std::vector< std::string > | tokenize (const std::string &str, const std::string &delimiters=" ")
std::string | string2lowerCase (const std::string &str)
template<typename T>
std::string | type2string (T in)
template<>
std::string | type2string< double > (double in)
template<typename T>
T | string2type (std::string s)
epoch_seconds | posixTime2epochTime (const boost::posix_time::ptime &time)
template<typename T>
std::vector< T > | tokenizeDotted (const std::string &str, const std::string &delimiter=",") throw (CDMException)
std::string | getXmlProp (const xmlNodePtr node, const std::string &attrName)
std::string | getXmlName (const xmlNodePtr node)

## Typedef Documentation

typedef long MetNoFimex::epoch_seconds

typedef boost::shared_ptr<Logger> MetNoFimex::LoggerPtr

typedef boost::shared_ptr<xmlXPathObject> MetNoFimex::XPathObjPtr

## Enumeration Type Documentation

enum MetNoFimex::CDMDataType

Enumerator:

  CDM_NAT |
  CDM_CHAR |
  CDM_SHORT |
  CDM_INT |
  CDM_FLOAT |
  CDM_DOUBLE |
  CDM_STRING |

## Function Documentation

template<typename T1, typename T2>

const boost::shared_array< T1 > MetNoFimex::constConvertArrayType | ( | const boost::shared_array< T2 > & | inData,
|  | long | length |
| ) |  |  | `[inline]`

return a shared array of this data, possibly pointer to internal data

Parameters:

  | inData | original data
  | length | length of original data array

template<typename OUT, typename IN>

boost::shared_array<OUT> MetNoFimex::convertArrayType | ( | const boost::shared_array< IN > & | inData,
|  | size_t | length,
|  | double | oldFill,
|  | double | oldScale,
|  | double | oldOffset,
|  | double | newFill,
|  | double | newScale,
|  | double | newOffset |
| ) |  |  | `[inline]`

References std::transform().

template<class InputIterator>

boost::shared_ptr< Data > MetNoFimex::createData | ( | CDMDataType | datatype,
|  | InputIterator | first,
|  | InputIterator | last |
| ) |  |  | throw (CDMException)`[inline]`

create a Data-pointer of the datatype and fill with the data from the iterator

Parameters:

  | datatype |
  | first | start of container containing the data to fill the array with
  | last | end (excluded) of the container containing the data to fill the array with

Returns:
  Base-Class ptr of the DataImpl belonging to the datatype

References CDM_CHAR, CDM_DOUBLE, CDM_FLOAT, CDM_INT, CDM_NAT, CDM_SHORT, and std::distance().

boost::shared_ptr<Data> MetNoFimex::createData | ( | CDMDataType | datatype,
|  | size_t | length,
|  | double | val = `0` |
| ) |  |  | throw (CDMException)

create a Data-pointer of the datatype

Parameters:

  | datatype |
  | size_t | length of the data array
  | val | default value for data elements, 0 by default

Returns:
  Base-Class ptr of the DataImpl belonging to the datatype

boost::shared_ptr<Data> MetNoFimex::createDataSlice | ( | CDMDataType | datatype,
|  | const Data & | data,
|  | size_t | dataStartPos,
|  | size_t | dataSize |
| ) |  |  | throw (CDMException)

create a one-dimensional dataslice from another Data object

Parameters:

  | datatype | of the return-data
  | data | the data to read the values from, should be convertible data-format
  | dataStartPos | the first element of data to fetch
  | dataSize | the size of the data

std::string MetNoFimex::datatype2string | ( | CDMDataType | type | ) |

void MetNoFimex::defaultLogLevel | ( | Logger::LogLevel |  | ) |

Logger::LogLevel MetNoFimex::defaultLogLevel | ( |  | ) |

the defaultLogLevel can be used by the implemented logger to determine the minimum LogLevel. This value might be ignored/overwritten by a configuration within the implementation. It should be initialized in the main class.

MetNoFimex::DEPRECATED | ( | std::string | attributesToProjStringconst std::vector< CDMAttribute > &attrs | ) |

convert attributes of a projection-variable to a projString

Deprecated:
  use Projection::create() with Projection::getProj4String() instead

Parameters:

  | attrs | attributes of the projection variable

Returns:
  proj4 string

MetNoFimex::DEPRECATED | ( | std::vector< CDMAttribute > | projStringToAttributesstd::string projStr | ) |

convert a proj4 string to a list of CDMAttributes usable for CF-1.0 projection variable

currently, projStrings of the form +proj=[stere] +lat_0=? +lon_0=? +lat_ts=?

Deprecated:
  use Projection::createByProj4() and Projection::getParameters()

template<typename T1, typename T2>

boost::shared_array< T1 > MetNoFimex::duplicateArrayType | ( | const boost::shared_array< T2 > & | inData,
|  | long | length |
| ) |  |  | `[inline]`

create a new shared array with a different type using static_cast

Parameters:

  | inData | original data
  | length | length of original data array

References std::transform().

boost::shared_ptr<FeltCDMReader2> MetNoFimex::getFeltReader | ( | std::string | filename,
|  | std::string | configFilename |
| ) |  |  |

convenience function to retrieve a reader as shared_ptr instead of calling new

LoggerPtr MetNoFimex::getLogger | ( | const std::string & | className | ) |

Retrieve a logger for Fimex. It will use loggers in the following order, skipping to the next one if the current one is not available: 1) log4cxx 2) no/dummy logger

boost::posix_time::ptime MetNoFimex::getUniqueForecastReferenceTime | ( | boost::shared_ptr< CDMReader > | reader | ) |

Try to find the forecast reference time of the reader. This has currently only be implemented for CF-1.x.

Parameters:

  | reader | the CDMReader to check for the reference time

Returns:
  the reference time

Exceptions:

  | CDMException | if eithern no reference time has been found, or if more than 1 different reference times have been found

std::string MetNoFimex::getXmlName | ( | const xmlNodePtr | node | ) |

a memory-save form of xmlGetName

Returns:
  a string of the attribute, "" if attribute doesn't exist

std::string MetNoFimex::getXmlProp | ( | const xmlNodePtr | node,
|  | const std::string & | attrName |
| ) |  |  |

a memory-save form of xmlGetProp

Returns:
  a string of the attribute, "" if attribute doesn't exist

GridDefinition::Orientation MetNoFimex::gribGetGridOrientation | ( | boost::shared_ptr< grib_handle > | gh | ) |

get the orientation of the data

Parameters:

  | gh | grib-handle

void MetNoFimex::handleUdUnitError | ( | int | unitErrCode,
|  | const std::string & | message = `""` |
| ) |  |  | throw (UnitException)

template<class InputIterator>

std::string MetNoFimex::join | ( | InputIterator | start,
|  | InputIterator | end,
|  | std::string | delim = `","` |
| ) |  |  | `[inline]`

Join values from an iterator to a string, using delimiter as separator.

Parameters:

  | start |
  | end |
  | delim | separator, default to ","

References std::basic_ostringstream< _CharT, _Traits, _Alloc >::str().

template<class InputIterator>

std::string MetNoFimex::joinPtr | ( | InputIterator | start,
|  | InputIterator | end,
|  | std::string | delim = `","` |
| ) |  |  | `[inline]`

Join values from an iterator of pointers to a string, using delimiter as separator.

Parameters:

  | start |
  | end |
  | delim | separator, default to ","

References std::basic_ostringstream< _CharT, _Traits, _Alloc >::str().

std::vector<boost::shared_ptr<const CoordinateSystem> > MetNoFimex::listCoordinateSystems | ( | const CDM & | cdm | ) |

fetch all coordinate system from a MetNoFimex::CDM

Examples:
  coordinateSystem.cpp.

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | out,
|  | const FimexTime & | fTime |
| ) |  |  |

minimum FimexTime

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | os,
|  | const GribFileIndex & | gfm |
| ) |  |  |

outputstream for a GribFileIndex

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | os,
|  | const GribFileMessage & | gfm |
| ) |  |  |

outputstream for a GribFileMessage

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | out,
|  | const Projection & | proj |
| ) |  |  |

output-stream for projections, implemented using toString()

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | out,
|  | const CoordinateSystem & | p |
| ) |  |  |

output operator

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | out,
|  | CoordinateAxis::AxisType | t |
| ) |  |  |

std::ostream& MetNoFimex::operator<< | ( | std::ostream & | out,
|  | CoordinateAxis | ca |
| ) |  |  |

epoch_seconds MetNoFimex::posixTime2epochTime | ( | const boost::posix_time::ptime & | time | ) |

convert a posixTime to seconds sinc 1970-01-01

Parameters:

  | time | time to convert

template<typename C>

void MetNoFimex::recursiveCopyMultiDimData | ( | C ** | orgData,
|  | C ** | newData,
|  | const std::vector< size_t > & | orgDimSize,
|  | const std::vector< size_t > & | orgSliceSize,
|  | const std::vector< size_t > & | newStart,
|  | const std::vector< size_t > & | newSize,
|  | size_t | currentDim |
| ) |  |  | `[inline]`

recursively copy data by moving the newData and orgData pointers forward and copy the data at the current position

it's assumed that the first dim in the vector is the fastest moving (fortran like)

Parameters:

  | orgData | pointer to the current postion of the original array
  | newData | pointer to the current position of the new array the original dimensions of orgData helper-array with orgSliceSize[0] = 1; orgSliceSize[n] = orgDimSize[n] * orgSliceSize[n-1] the start positions in the new data the dimensions of the newData the dimension currently under work, should be between (orgData.size()-1) and 0

References std::copy().

Referenced by MetNoFimex::DataImpl< C >::slice().

int MetNoFimex::round | ( | double | num | ) |

Round a double to integer.

CDMDataType MetNoFimex::string2datatype | ( | const std::string & | s | ) |

translate float/string/... to the appropriate CDMDataType

FimexTime MetNoFimex::string2FimexTime | ( | const std::string & | str | ) | throw (CDMException)

std::string MetNoFimex::string2lowerCase | ( | const std::string & | str | ) |

convert a string to lowercase

template<typename T>

T MetNoFimex::string2type | ( | std::string | s | ) | `[inline]`

std::vector<std::string> MetNoFimex::tokenize | ( | const std::string & | str,
|  | const std::string & | delimiters = `" "` |
| ) |  |  |

Tokenize a string by a delimiter. This function will automaticall remove empty strings at the beginning or anywhere inside the string.

This function has been derived from http://www.oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html

Parameters:

  | str | the string to tokenize
  | delimiters | the delimiters between the tokens

Returns:
  vector of tokens

Referenced by tokenizeDotted().

template<typename T>

std::vector<T> MetNoFimex::tokenizeDotted | ( | const std::string & | str,
|  | const std::string & | delimiter = `","` |
| ) |  |  | throw (CDMException)`[inline]`

convert a string with dots to a vector with type T

Parameters:

  | str | f.e. 3.5,4.5,...,17.5
  | delimiter | optional delimiter, defaults to ,

References std::vector< _Tp, _Alloc >::begin(), std::vector< _Tp, _Alloc >::end(), std::vector< _Tp, _Alloc >::push_back(), std::vector< _Tp, _Alloc >::size(), tokenize(), trim(), and type2string().

std::string MetNoFimex::trim | ( | const std::string & | str | ) |

Remove leading and trailing spaces.

Parameters:

  | str | string to trim

Referenced by tokenizeDotted().

template<typename T>

std::string MetNoFimex::type2string | ( | T | in | ) | `[inline]`

convert a type (i.e. int, float) to string representation

References std::basic_ostringstream< _CharT, _Traits, _Alloc >::str().

Referenced by MetNoFimex::DataImpl< C >::setValues(), MetNoFimex::DataImpl< C >::slice(), and tokenizeDotted().

template<>

std::string MetNoFimex::type2string< double > | ( | double | in | ) | `[inline]`

specialization for high prececision