GeoTessCPP  2.6.1
Software to facilitate storage and retrieval of 3D information about the Earth.
All Classes Namespaces Files Functions Variables Typedefs Friends Macros
geotess::GeoTessProfile Class Reference

Abstract class that manages the radii and data values that span a single layer associated with a single vertex in the model. More...

#include <GeoTessProfile.h>

Inheritance diagram for geotess::GeoTessProfile:
geotess::GeoTessProfileConstant geotess::GeoTessProfileEmpty geotess::GeoTessProfileNPoint geotess::GeoTessProfileSurface geotess::GeoTessProfileSurfaceEmpty geotess::GeoTessProfileThin

Public Member Functions

virtual int class_size () const
 
virtual LONG_INT getMemory ()
 
virtual const GeoTessProfileTypegetType () const
 
virtual bool operator== (const GeoTessProfile &p) const
 
virtual double getValue (const GeoTessInterpolatorType &rInterpType, int attributeIndex, double radius, bool allowRadiusOutOfRange) const
 
double getValue (const vector< int > &nodeIds, const vector< double > &coefficients, int attributeIndex) const
 
virtual double getValue (int attributeIndex, int nodeIndex) const
 
virtual bool isNaN (int nodeIndex, int attributeIndex)
 
virtual double getValueTop (int attributeIndex) const
 
virtual double getValueBottom (int attributeIndex) const
 
virtual float getRadius (int i) const
 
virtual int getNRadii () const
 
virtual int getNData () const
 
virtual float * getRadii ()
 
virtual GeoTessData ** getData ()
 
virtual GeoTessDatagetData (int i)
 
virtual const GeoTessDatagetData (int i) const
 
virtual void setData (int index, GeoTessData *data)
 
virtual void setData (const vector< GeoTessData * > &inData)
 
virtual void setRadii (const vector< float > &newRadii)
 
virtual void setRadius (int index, float radius)
 
virtual float getRadiusTop () const
 
virtual const GeoTessDatagetDataTop () const
 
virtual GeoTessDatagetDataTop ()
 
virtual float getRadiusBottom () const
 
virtual const GeoTessDatagetDataBottom () const
 
virtual GeoTessDatagetDataBottom ()
 
double getThickness ()
 
int getRadiusIndex (double radius) const
 
virtual int getRadiusIndex (double radius, int jlo) const
 
virtual double getInterpolationCoefficient (int i, double radius, bool allowOutOfRange) const
 
virtual int getPointIndex (int nodeIndex) const
 
virtual int findClosestRadiusIndex (double radius) const
 

Static Public Member Functions

static GeoTessProfilenewProfile (const vector< float > &radii, vector< GeoTessData * > &data)
 
static GeoTessProfilenewProfile (const vector< float > &radii, vector< vector< double > > &data)
 
static GeoTessProfilenewProfile (const vector< float > &radii, vector< vector< float > > &data)
 
static GeoTessProfilenewProfile (const vector< float > &radii, vector< vector< LONG_INT > > &data)
 
static GeoTessProfilenewProfile (const vector< float > &radii, vector< vector< int > > &data)
 
static GeoTessProfilenewProfile (const vector< float > &radii, vector< vector< short > > &data)
 
static GeoTessProfilenewProfile (const vector< float > &radii, vector< vector< byte > > &data)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, GeoTessData **data, const int &nData)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, double **values, const int &nNodes, const int &nAttributes)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, float **values, const int &nNodes, const int &nAttributes)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, LONG_INT **values, const int &nNodes, const int &nAttributes)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, int **values, const int &nNodes, const int &nAttributes)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, short **values, const int &nNodes, const int &nAttributes)
 
static GeoTessProfilenewProfile (float *radii, const int &nRadii, byte **values, const int &nNodes, const int &nAttributes)
 
static string class_name ()
 
static int class_count ()
 

Detailed Description

Abstract class that manages the radii and data values that span a single layer associated with a single vertex in the model.

An abstract class that manages the radii and data values that span a single layer associated with a single vertex in the model. The following Profile types are supported:

  • ProfileNPoint is comprised on 2 or more monotonically increasing radius values and an equal number of Data objects which define the distribution of model values in the profile.
  • ProfileConstant is comprised of two radius values, one defining the bottom of the layer and the other the top of the layer. There is a single Data object which defines the model values for the entire profile.
  • ProfileThin represents a profile with zero thickness. It is comprised of a single radius value and a single Data object.
  • ProfileEmpty defines a profile with no Data. It is comprised of two radius values, one for the bottom of the layer and the other for the top of the layer. Any request for model values will return NaN_DOUBLE.
  • ProfileSurface profiles are comprised of only a single Data object and no radius values. They are used to support 2D models where the radius of the Data values is not used. ProfileSurface objects and all the other Profile types are incompatible in the sense that they may not coexist in the same model (a model is either 2D or 3D, but never both).

Definition at line 96 of file GeoTessProfile.h.

Member Function Documentation

◆ class_count()

static int geotess::GeoTessProfile::class_count ( )
inlinestatic

Returns the class instance count.

Definition at line 288 of file GeoTessProfile.h.

◆ class_name()

static string geotess::GeoTessProfile::class_name ( )
inlinestatic

Returns the class name.

Definition at line 276 of file GeoTessProfile.h.

◆ class_size()

virtual int geotess::GeoTessProfile::class_size ( ) const
inlinevirtual

◆ findClosestRadiusIndex()

virtual int geotess::GeoTessProfile::findClosestRadiusIndex ( double  radius) const
virtual

Find the node index of the radius in this Profile that has radius closest to the supplied radius.

Reimplemented in geotess::GeoTessProfileEmpty.

◆ getData() [1/3]

virtual GeoTessData** geotess::GeoTessProfile::getData ( )
virtual

Retrieve a shallow copy of the array of Data objects associated with this Profile. Caller assumes ownership of the array, but not the contents, and must delete the array when done with it.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ getData() [2/3]

virtual GeoTessData* geotess::GeoTessProfile::getData ( int  i)
virtual

Retrieve a reference the i'th Data object. This Profile retains ownership of the returned Data object; caller should not delete it.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ getData() [3/3]

virtual const GeoTessData& geotess::GeoTessProfile::getData ( int  i) const
virtual

◆ getDataBottom() [1/2]

virtual GeoTessData* geotess::GeoTessProfile::getDataBottom ( )
virtual

◆ getDataBottom() [2/2]

virtual const GeoTessData& geotess::GeoTessProfile::getDataBottom ( ) const
virtual

◆ getDataTop() [1/2]

virtual GeoTessData* geotess::GeoTessProfile::getDataTop ( )
virtual

◆ getDataTop() [2/2]

virtual const GeoTessData& geotess::GeoTessProfile::getDataTop ( ) const
virtual

◆ getInterpolationCoefficient()

virtual double geotess::GeoTessProfile::getInterpolationCoefficient ( int  i,
double  radius,
bool  allowOutOfRange 
) const
inlinevirtual

find interpolation coefficient.

Parameters
ithe index in radii such that radius is between radii[index] and radii[index+1].
radiusthe radius whose interpolation coefficient is desired.
allowOutOfRangeif false and the supplied radius is out of range then this method returns NaN_DOUBLE.
Returns
c[index], the interpolation coefficient to be applied at radii[index]. The interpolation coefficient for radii[index+1] is 1-c[index].

Reimplemented in geotess::GeoTessProfileNPoint.

Definition at line 504 of file GeoTessProfile.h.

◆ getMemory()

◆ getNData()

virtual int geotess::GeoTessProfile::getNData ( ) const
virtual

◆ getNRadii()

virtual int geotess::GeoTessProfile::getNRadii ( ) const
virtual

◆ getPointIndex()

virtual int geotess::GeoTessProfile::getPointIndex ( int  nodeIndex) const
virtual

Get the pointIndex that corresponds to the supplied nodeIndex.

There is a node index for each Data object in a profile and they are indexed from 0 to the number of Data objects managed by a Profile. There is a pointIndex for every Data object in the entire model, indexed from 0 to the number of Data objects in the model.

Reimplemented in geotess::GeoTessProfileEmpty.

◆ getRadii()

virtual float* geotess::GeoTessProfile::getRadii ( )
virtual

Retrieve a copy of the array of radii values in km. Caller assumes ownership of the array and must delete it when done with it.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ getRadius()

virtual float geotess::GeoTessProfile::getRadius ( int  i) const
virtual

Get the i'th radius value in this profile in km. Radii are in order of increasing radius.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ getRadiusBottom()

virtual float geotess::GeoTessProfile::getRadiusBottom ( ) const
virtual

◆ getRadiusIndex() [1/2]

int geotess::GeoTessProfile::getRadiusIndex ( double  radius) const
inline

Find index i such that radius is >= radii[i] and < radii[i+1]. If radius < radii[1] returns 0. If radius >= radii[xx.length-2] return radii.length-2.

Definition at line 472 of file GeoTessProfile.h.

◆ getRadiusIndex() [2/2]

virtual int geotess::GeoTessProfile::getRadiusIndex ( double  radius,
int  jlo 
) const
inlinevirtual

Find index i such that radius is >= radii[i] and < radii[i+1]. If radius < radii[1] returns 0. If radius >= radii[xx.length-2] return radii.length-2.

Parameters
radius
jloindex found by a previous search. Used as an initial guess to improve performance of the search. Specify -1 if none available.

Reimplemented in geotess::GeoTessProfileNPoint.

Definition at line 486 of file GeoTessProfile.h.

◆ getRadiusTop()

virtual float geotess::GeoTessProfile::getRadiusTop ( ) const
virtual

◆ getThickness()

double geotess::GeoTessProfile::getThickness ( )
inline

Return the thickness of the layer in km.

Definition at line 465 of file GeoTessProfile.h.

◆ getType()

virtual const GeoTessProfileType& geotess::GeoTessProfile::getType ( ) const
virtual

◆ getValue() [1/3]

virtual double geotess::GeoTessProfile::getValue ( const GeoTessInterpolatorType rInterpType,
int  attributeIndex,
double  radius,
bool  allowRadiusOutOfRange 
) const
virtual

◆ getValue() [2/3]

double geotess::GeoTessProfile::getValue ( const vector< int > &  nodeIds,
const vector< double > &  coefficients,
int  attributeIndex 
) const
inline

Retrieve the value of the specified attribute interpolated at the specified radius.

Definition at line 314 of file GeoTessProfile.h.

◆ getValue() [3/3]

virtual double geotess::GeoTessProfile::getValue ( int  attributeIndex,
int  nodeIndex 
) const
virtual

Retrieve the value of the specified attribute interpolated from this profile at the specified radius index

Parameters
attributeIndex
nodeIndex
Returns
double

Reimplemented in geotess::GeoTessProfileNPoint, geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ getValueBottom()

virtual double geotess::GeoTessProfile::getValueBottom ( int  attributeIndex) const
inlinevirtual

Retrieve the value of the specified attribute at the bottom of the layer.

Parameters
attributeIndex
Returns
double

Reimplemented in geotess::GeoTessProfileEmpty.

Definition at line 359 of file GeoTessProfile.h.

◆ getValueTop()

virtual double geotess::GeoTessProfile::getValueTop ( int  attributeIndex) const
virtual

Retrieve the value of the specified attribute at the top of the layer.

Parameters
attributeIndex
Returns
double

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ isNaN()

virtual bool geotess::GeoTessProfile::isNaN ( int  nodeIndex,
int  attributeIndex 
)
virtual

Return true if the specified Data value is NaN. For doubles and floats, this means not NaN. For bytes, shorts, ints and longs, always returns false since there is no value that is NaN.

Parameters
nodeIndex
attributeIndex
Returns
true if the specified Data value is NaN.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ newProfile() [1/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< GeoTessData * > &  data 
)
static

Static factory method that instantiates a new Profile object of the appropriate type.
If radii.size() == 2 and data.size() == 0, creates a ProfileEmpty object.
If radii.size() == 1 and data.size() == 1, creates a ProfileThin object.
If radii.size() == 2 and data.size() == 1, creates a ProfileConstant object.
If radii.size() >= 2 and data.size() == nRadii, creates a ProfileNPoint object.
If radii.size() == 0 and data.size() == 1, creates a ProfileSurface object.

This method copies the radius values and Data* pointers out of the provided vectors into its owne structures. Profile assumes ownership of the Data* pointers and will delete them when no longer needed.

Parameters
radiian array of zero or more radius values, in km. Values must be monotonically increasing.
dataan array of pointers to Data objects.
Returns
a new Profile object
Exceptions
GeoTessException

◆ newProfile() [2/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< vector< byte > > &  data 
)
static

◆ newProfile() [3/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< vector< double > > &  data 
)
static

◆ newProfile() [4/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< vector< float > > &  data 
)
static

◆ newProfile() [5/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< vector< int > > &  data 
)
static

◆ newProfile() [6/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< vector< LONG_INT > > &  data 
)
static

◆ newProfile() [7/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( const vector< float > &  radii,
vector< vector< short > > &  data 
)
static

◆ newProfile() [8/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
byte **  values,
const int &  nNodes,
const int &  nAttributes 
)
inlinestatic

Definition at line 254 of file GeoTessProfile.h.

◆ newProfile() [9/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
double **  values,
const int &  nNodes,
const int &  nAttributes 
)
inlinestatic

Definition at line 159 of file GeoTessProfile.h.

◆ newProfile() [10/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
float **  values,
const int &  nNodes,
const int &  nAttributes 
)
inlinestatic

Definition at line 178 of file GeoTessProfile.h.

◆ newProfile() [11/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
GeoTessData **  data,
const int &  nData 
)
static

Static factory method that instantiates a new Profile object of the appropriate type.
If nRadii == 2 and nData == 0, creates a ProfileEmpty object.
If nRadii == 1 and nData == 1, creates a ProfileThin object.
If nRadii == 2 and nData == 1, creates a ProfileConstant object.
If nRadii >= 2 and nData == nRadii, creates a ProfileNPoint object.
If nRadii == 0 and nData == 1, creates a ProfileSurface object.

This method copies the radius values and Data* pointers out of the provided arrays into its own structures. Profile assumes ownership of the Data* pointers and will delete them when no longer needed. The callers retains ownership of the containing arrays however and should delete them when no longer needed.

Parameters
radiian array of zero or more radius values, in km. Values must be monotonically increasing.
nRadiithe length of the radii array.
dataan array of pointers to Data objects.
nDatathe length of the data array
Returns
a new Profile object
Exceptions
GeoTessException

◆ newProfile() [12/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
int **  values,
const int &  nNodes,
const int &  nAttributes 
)
inlinestatic

Definition at line 216 of file GeoTessProfile.h.

◆ newProfile() [13/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
LONG_INT **  values,
const int &  nNodes,
const int &  nAttributes 
)
inlinestatic

Definition at line 197 of file GeoTessProfile.h.

◆ newProfile() [14/14]

static GeoTessProfile* geotess::GeoTessProfile::newProfile ( float *  radii,
const int &  nRadii,
short **  values,
const int &  nNodes,
const int &  nAttributes 
)
inlinestatic

Definition at line 235 of file GeoTessProfile.h.

◆ operator==()

virtual bool geotess::GeoTessProfile::operator== ( const GeoTessProfile p) const
inlinevirtual

Return true if the input Profile object (p) profile type is the same as this Profile object.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

Definition at line 301 of file GeoTessProfile.h.

◆ setData() [1/2]

virtual void geotess::GeoTessProfile::setData ( const vector< GeoTessData * > &  inData)
virtual

Replace the Data currently associated with this Profile with new Data. The current Data objects are deleted.

This Profile assumes ownership of the input Data objects and will delete them when appropriate.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ setData() [2/2]

virtual void geotess::GeoTessProfile::setData ( int  index,
GeoTessData data 
)
virtual

Replace the Data currently associated with this Profile with new Data. The current Data objects are deleted.

This Profile assumes ownership of the input Data objects and will delete them when appropriate.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ setRadii()

virtual void geotess::GeoTessProfile::setRadii ( const vector< float > &  newRadii)
virtual

Replace the radii currently associated with this Profile with new values. Radius values are copied from the supplied vector. This Profile does NOT keep a reference to the input vector.

Reimplemented in geotess::GeoTessProfileThin, geotess::GeoTessProfileSurfaceEmpty, geotess::GeoTessProfileSurface, geotess::GeoTessProfileNPoint, geotess::GeoTessProfileEmpty, and geotess::GeoTessProfileConstant.

◆ setRadius()

virtual void geotess::GeoTessProfile::setRadius ( int  index,
float  radius 
)
virtual

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