MeteoIODoc 20261003.b9219c1f
Environmental timeseries pre-processing
Loading...
Searching...
No Matches
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.
 
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)
 
bool getKeepNodata ()
 get how to process nodata values (ie: as nodata or as normal numbers)
 
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
 
T getMin () const
 returns the minimum value contained in the grid
 
T getMax () const
 returns the maximum value contained in the grid
 
T getMean () const
 returns the mean value contained in the grid
 
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
 
const Array4D< T > getAbs () const
 returns the grid of the absolute value of values contained in the grid
 
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.
 
bool operator!= (const Array4D< T > &) const
 Operator that tests for inequality.
 

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.
 
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 ( ) const

◆ 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 ( ) const

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 ( ) 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

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 ( ) const

returns the maximum value contained in the grid

Returns
maximum value

◆ getMean()

template<class T >
T mio::Array4D< T >::getMean ( ) const

returns the mean value contained in the grid

Returns
mean value

◆ getMin()

template<class T >
T mio::Array4D< T >::getMin ( ) const

returns the minimum value contained in the grid

Returns
minimum value

◆ getNw()

template<class T >
size_t mio::Array4D< T >::getNw ( ) const

◆ getNx()

template<class T >
size_t mio::Array4D< T >::getNx ( ) const

◆ getNy()

template<class T >
size_t mio::Array4D< T >::getNy ( ) const

◆ getNz()

template<class T >
size_t mio::Array4D< T >::getNz ( ) const

◆ 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 ( ) const

◆ 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 ( ) const

Friends And Related Symbol 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: