MeteoIODoc 20241221.207bde49
mio::Array4D< T > Class Template Reference

Detailed Description

template<class T>
class mio::Array4D< T >

The template class Array4D is a 4D Array (Tensor) able to hold any type of object as datatype.

Date
2012-12-20
Author
Till Schumann

#include <Array4D.h>

Public Member Functions

 Array4D ()
 
 Array4D (const Array4D< T > &i_array4D, const size_t &i_nw, const size_t &i_nx, const size_t &i_ny, const size_t &i_nz, const size_t &i_sizeW, const size_t &i_sizeX, const size_t &i_sizeY, const size_t &i_sizeZ)
 
 Array4D (const size_t &anw, const size_t &anx, const size_t &any, const size_t &anz)
 
 Array4D (const size_t &i_sizeW, const size_t &i_sizeX, const size_t &i_sizeY, const size_t &i_sizeZ, const T &init)
 
void subset (const Array4D< T > &i_array4D, const size_t &i_nw, const size_t &i_nx, const size_t &i_ny, const size_t &i_nz, const size_t &i_sizeW, const size_t &i_sizeX, const size_t &i_sizeY, const size_t &i_sizeZ)
 
void fill (const Array4D< T > &i_array4D, const size_t &i_nw, const size_t &i_nx, const size_t &i_ny, const size_t &i_nz, const size_t &i_sizeW, const size_t &i_sizeX, const size_t &i_sizeY, const size_t &i_sizeZ)
 A method that can be used to insert a subplane into an existing Array4D object that is passed as i_array4D argument. This is exactly the opposite of the subset method an can be used to rebuild an array from subsets. More...
 
void fill (const Array4D< T > &i_array4D, const size_t &i_nw, const size_t &i_nx, const size_t &i_ny, const size_t &i_nz)
 
void setKeepNodata (const bool i_keep_nodata)
 set how to process nodata values (ie: as nodata or as normal numbers) More...
 
bool getKeepNodata ()
 get how to process nodata values (ie: as nodata or as normal numbers) More...
 
void resize (const size_t &anw, const size_t &anx, const size_t &any, const size_t &anz)
 
void resize (const size_t &anw, const size_t &anx, const size_t &any, const size_t &anz, const T &init)
 
void size (size_t &anw, size_t &anx, size_t &any, size_t &anz) const
 
size_t size () const
 
size_t getNw () const
 
size_t getNx () const
 
size_t getNy () const
 
size_t getNz () const
 
void clear ()
 
bool empty () const
 
getMin () const
 returns the minimum value contained in the grid More...
 
getMax () const
 returns the maximum value contained in the grid More...
 
getMean () const
 returns the mean value contained in the grid More...
 
size_t getCount () const
 returns the number of points contained in the grid. If setNodataHandling(IOUtils::RAW_NODATA), then the number of points is the size of the grid. If setNodataHandling(IOUtils::PARSE_NODATA), then it is the number of non-nodata values in the grid More...
 
const Array4D< T > getAbs () const
 returns the grid of the absolute value of values contained in the grid More...
 
void abs ()
 
const std::string toString () const
 
bool checkEpsilonEquality (const Array4D< double > &rhs, const double &epsilon) const
 
T & operator() (const size_t &i)
 
const T operator() (const size_t &i) const
 
T & operator() (const size_t &w, const size_t &x, const size_t &y, const size_t &z)
 
const T operator() (const size_t &w, const size_t &x, const size_t &y, const size_t &z) const
 
Array4D< T > & operator= (const T &value)
 
Array4D< T > & operator+= (const T &rhs)
 
const Array4D< T > operator+ (const T &rhs) const
 
Array4D< T > & operator+= (const Array4D< T > &rhs)
 
const Array4D< T > operator+ (const Array4D< T > &rhs) const
 
Array4D< T > & operator-= (const T &rhs)
 
const Array4D< T > operator- (const T &rhs) const
 
Array4D< T > & operator-= (const Array4D< T > &rhs)
 
const Array4D< T > operator- (const Array4D< T > &rhs) const
 
Array4D< T > & operator*= (const T &rhs)
 
const Array4D< T > operator* (const T &rhs) const
 
Array4D< T > & operator*= (const Array4D< T > &rhs)
 
const Array4D< T > operator* (const Array4D< T > &rhs) const
 
Array4D< T > & operator/= (const T &rhs)
 
const Array4D< T > operator/ (const T &rhs) const
 
Array4D< T > & operator/= (const Array4D< T > &rhs)
 
const Array4D< T > operator/ (const Array4D< T > &rhs) const
 
bool operator== (const Array4D< T > &) const
 Operator that tests for equality. More...
 
bool operator!= (const Array4D< T > &) const
 Operator that tests for inequality. More...
 

Static Public Member Functions

static bool checkEpsilonEquality (const Array4D< double > &rhs1, const Array4D< double > &rhs2, const double &epsilon)
 

Protected Attributes

std::vector< T > vecData
 The actual objects are stored in a one-dimensional vector. More...
 
size_t nw
 
size_t nx
 
size_t ny
 
size_t nz
 
size_t nwnx
 
size_t nwnxny
 
bool keep_nodata
 

Friends

template<class P >
std::ostream & operator<< (std::ostream &os, const Array4D< P > &array)
 
template<class P >
std::istream & operator>> (std::istream &is, Array4D< P > &array)
 

Constructor & Destructor Documentation

◆ Array4D() [1/4]

template<class T >
mio::Array4D< T >::Array4D

◆ Array4D() [2/4]

template<class T >
mio::Array4D< T >::Array4D ( const Array4D< T > &  i_array4D,
const size_t &  i_nw,
const size_t &  i_nx,
const size_t &  i_ny,
const size_t &  i_nz,
const size_t &  i_sizeW,
const size_t &  i_sizeX,
const size_t &  i_sizeY,
const size_t &  i_sizeZ 
)

A constructor that can be used to create an Array4D object that is contained in the one passed as i_array4D argument. The resulting Array4D object is a by value copy of a subvolume of the volume spanned by the i_array4D

Parameters
i_array4Darray containing to extract the values from
i_nwlower left corner cell W index
i_nxlower left corner cell X index
i_nylower left corner cell Y index
i_nzlower left corner cell Z index
i_sizeWlength of the w dimension of the new array
i_sizeXlength of the x dimension of the new array
i_sizeYlength of the y dimension of the new array
i_sizeZlength of the z dimension of the new array

◆ Array4D() [3/4]

template<class T >
mio::Array4D< T >::Array4D ( const size_t &  anw,
const size_t &  anx,
const size_t &  any,
const size_t &  anz 
)

◆ Array4D() [4/4]

template<class T >
mio::Array4D< T >::Array4D ( const size_t &  i_sizeW,
const size_t &  i_sizeX,
const size_t &  i_sizeY,
const size_t &  i_sizeZ,
const T &  init 
)

A constructor that creates an array filled with constant values

Parameters
i_sizeWlength of the w dimension of the new array
i_sizeXlength of the x dimension of the new array
i_sizeYlength of the y dimension of the new array
i_sizeZlength of the z dimension of the new array
initinitial value to fill the array with

Member Function Documentation

◆ abs()

template<class T >
void mio::Array4D< T >::abs

◆ checkEpsilonEquality() [1/2]

template<class T >
bool mio::Array4D< T >::checkEpsilonEquality ( const Array4D< double > &  rhs,
const double &  epsilon 
) const

◆ checkEpsilonEquality() [2/2]

template<class T >
bool mio::Array4D< T >::checkEpsilonEquality ( const Array4D< double > &  rhs1,
const Array4D< double > &  rhs2,
const double &  epsilon 
)
static

◆ clear()

template<class T >
void mio::Array4D< T >::clear

◆ empty()

template<class T >
bool mio::Array4D< T >::empty

◆ fill() [1/2]

template<class T >
void mio::Array4D< T >::fill ( const Array4D< T > &  i_array4D,
const size_t &  i_nw,
const size_t &  i_nx,
const size_t &  i_ny,
const size_t &  i_nz 
)

◆ fill() [2/2]

template<class T >
void mio::Array4D< T >::fill ( const Array4D< T > &  i_array4D,
const size_t &  i_nw,
const size_t &  i_nx,
const size_t &  i_ny,
const size_t &  i_nz,
const size_t &  i_sizeW,
const size_t &  i_sizeX,
const size_t &  i_sizeY,
const size_t &  i_sizeZ 
)

A method that can be used to insert a subplane into an existing Array4D object that is passed as i_array4D argument. This is exactly the opposite of the subset method an can be used to rebuild an array from subsets.

Parameters
i_array4Darray containing to extract the values from
i_nwlower left corner cell W index
i_nxlower left corner cell X index
i_nylower left corner cell Y index
i_nzlower left corner cell Z index
i_sizeWlength of the w dimension of the new array
i_sizeXlength of the x dimension of the new array
i_sizeYlength of the y dimension of the new array
i_sizeZlength of the z dimension of the new array

◆ getAbs()

template<class T >
const Array4D< T > mio::Array4D< T >::getAbs

returns the grid of the absolute value of values contained in the grid

Returns
grid of abs(grid)

◆ getCount()

template<class T >
size_t mio::Array4D< T >::getCount

returns the number of points contained in the grid. If setNodataHandling(IOUtils::RAW_NODATA), then the number of points is the size of the grid. If setNodataHandling(IOUtils::PARSE_NODATA), then it is the number of non-nodata values in the grid

Returns
count

◆ getKeepNodata()

template<class T >
bool mio::Array4D< T >::getKeepNodata

get how to process nodata values (ie: as nodata or as normal numbers)

Returns
true means that NODATA is interpreted as NODATA, false means that it is a normal number

◆ getMax()

template<class T >
T mio::Array4D< T >::getMax

returns the maximum value contained in the grid

Returns
maximum value

◆ getMean()

template<class T >
T mio::Array4D< T >::getMean

returns the mean value contained in the grid

Returns
mean value

◆ getMin()

template<class T >
T mio::Array4D< T >::getMin

returns the minimum value contained in the grid

Returns
minimum value

◆ getNw()

template<class T >
size_t mio::Array4D< T >::getNw

◆ getNx()

template<class T >
size_t mio::Array4D< T >::getNx

◆ getNy()

template<class T >
size_t mio::Array4D< T >::getNy

◆ getNz()

template<class T >
size_t mio::Array4D< T >::getNz

◆ operator!=()

template<class T >
bool mio::Array4D< T >::operator!= ( const Array4D< T > &  in) const

Operator that tests for inequality.

◆ operator()() [1/4]

template<class T >
T & mio::Array4D< T >::operator() ( const size_t &  i)
inline

◆ operator()() [2/4]

template<class T >
const T mio::Array4D< T >::operator() ( const size_t &  i) const
inline

◆ operator()() [3/4]

template<class T >
T & mio::Array4D< T >::operator() ( const size_t &  w,
const size_t &  x,
const size_t &  y,
const size_t &  z 
)
inline

◆ operator()() [4/4]

template<class T >
const T mio::Array4D< T >::operator() ( const size_t &  w,
const size_t &  x,
const size_t &  y,
const size_t &  z 
) const
inline

◆ operator*() [1/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator* ( const Array4D< T > &  rhs) const

◆ operator*() [2/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator* ( const T &  rhs) const

◆ operator*=() [1/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator*= ( const Array4D< T > &  rhs)

◆ operator*=() [2/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator*= ( const T &  rhs)

◆ operator+() [1/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator+ ( const Array4D< T > &  rhs) const

◆ operator+() [2/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator+ ( const T &  rhs) const

◆ operator+=() [1/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator+= ( const Array4D< T > &  rhs)

◆ operator+=() [2/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator+= ( const T &  rhs)

◆ operator-() [1/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator- ( const Array4D< T > &  rhs) const

◆ operator-() [2/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator- ( const T &  rhs) const

◆ operator-=() [1/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator-= ( const Array4D< T > &  rhs)

◆ operator-=() [2/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator-= ( const T &  rhs)

◆ operator/() [1/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator/ ( const Array4D< T > &  rhs) const

◆ operator/() [2/2]

template<class T >
const Array4D< T > mio::Array4D< T >::operator/ ( const T &  rhs) const

◆ operator/=() [1/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator/= ( const Array4D< T > &  rhs)

◆ operator/=() [2/2]

template<class T >
Array4D< T > & mio::Array4D< T >::operator/= ( const T &  rhs)

◆ operator=()

template<class T >
Array4D< T > & mio::Array4D< T >::operator= ( const T &  value)

◆ operator==()

template<class T >
bool mio::Array4D< T >::operator== ( const Array4D< T > &  in) const

Operator that tests for equality.

◆ resize() [1/2]

template<class T >
void mio::Array4D< T >::resize ( const size_t &  anw,
const size_t &  anx,
const size_t &  any,
const size_t &  anz 
)

◆ resize() [2/2]

template<class T >
void mio::Array4D< T >::resize ( const size_t &  anw,
const size_t &  anx,
const size_t &  any,
const size_t &  anz,
const T &  init 
)

◆ setKeepNodata()

template<class T >
void mio::Array4D< T >::setKeepNodata ( const bool  i_keep_nodata)

set how to process nodata values (ie: as nodata or as normal numbers)

Parameters
i_keep_nodatatrue means that NODATA is interpreted as NODATA, false means that it is a normal number By default, arrays keep nodata.

◆ size() [1/2]

template<class T >
size_t mio::Array4D< T >::size

◆ size() [2/2]

template<class T >
void mio::Array4D< T >::size ( size_t &  anw,
size_t &  anx,
size_t &  any,
size_t &  anz 
) const

◆ subset()

template<class T >
void mio::Array4D< T >::subset ( const Array4D< T > &  i_array4D,
const size_t &  i_nw,
const size_t &  i_nx,
const size_t &  i_ny,
const size_t &  i_nz,
const size_t &  i_sizeW,
const size_t &  i_sizeX,
const size_t &  i_sizeY,
const size_t &  i_sizeZ 
)

A method that can be used to create an Array4D object that is contained in the one passed as i_array4D argument. The resulting Array4D object is a by value copy of a subvolume of the volume spanned by the i_array4D

Parameters
i_array4Darray containing to extract the values from
i_nwlower left corner cell W index
i_nxlower left corner cell X index
i_nylower left corner cell Y index
i_nzlower left corner cell Z index
i_sizeWlength of the w dimension of the new array
i_sizeXlength of the x dimension of the new array
i_sizeYlength of the y dimension of the new array
i_sizeZlength of the z dimension of the new array

◆ toString()

template<class T >
const std::string mio::Array4D< T >::toString

Friends And Related Function Documentation

◆ operator<<

template<class T >
template<class P >
std::ostream & operator<< ( std::ostream &  os,
const Array4D< P > &  array 
)
friend

◆ operator>>

template<class T >
template<class P >
std::istream & operator>> ( std::istream &  is,
Array4D< P > &  array 
)
friend

Member Data Documentation

◆ keep_nodata

template<class T >
bool mio::Array4D< T >::keep_nodata
protected

◆ nw

template<class T >
size_t mio::Array4D< T >::nw
protected

◆ nwnx

template<class T >
size_t mio::Array4D< T >::nwnx
protected

◆ nwnxny

template<class T >
size_t mio::Array4D< T >::nwnxny
protected

◆ nx

template<class T >
size_t mio::Array4D< T >::nx
protected

◆ ny

template<class T >
size_t mio::Array4D< T >::ny
protected

◆ nz

template<class T >
size_t mio::Array4D< T >::nz
protected

◆ vecData

template<class T >
std::vector<T> mio::Array4D< T >::vecData
protected

The actual objects are stored in a one-dimensional vector.


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