36 #ifndef GEOTESSMODEL_OBJECT_H
37 #define GEOTESSMODEL_OBJECT_H
70 class GeoTessPosition;
72 class GeoTessMetaData;
73 class GeoTessOptimizationType;
136 static map<string, GeoTessGrid*> reuseGridMap;
177 void deleteProfiles();
189 void loadModelAscii(
const string& inputFile,
const string& relGridFilePath);
207 virtual void loadModelAscii(
IFStreamAscii& input,
const string& inputDirectory,
208 const string& relGridFilePath);
223 void loadModelBinary(
const string& inputFile,
const string& relGridFilePath);
240 virtual void loadModelBinary(
IFStreamBinary& input,
const string& inputDirectory,
241 const string& relGridFilePath);
252 void writeModelAscii(
const string& outputFile,
const string& gridFileName);
263 virtual void writeModelAscii(
IFStreamAscii& output,
const string& gridFileName);
274 void writeModelBinary(
const string& outputFile,
const string& gridFileName);
285 virtual void writeModelBinary(
IFStreamBinary& output,
const string& gridFileName);
300 void loadGrid(T& input,
const string& inputDirectory,
301 const string& relGridFilePath,
const string& gridFileName,
302 const string& gridID,
const string& funcName)
307 map<string, GeoTessGrid*>::iterator it = reuseGridMap.find(gridID);
308 if (it != reuseGridMap.end())
311 if (gridFileName ==
"*")
325 reuseGridMap[gridID] = grid;
335 string gridFil = gridFileName;
336 if (relGridFilePath !=
"")
337 gridFil = CPPUtils::insertPathSeparator(relGridFilePath, gridFileName);
338 if (inputDirectory !=
"")
339 gridFil = CPPUtils::insertPathSeparator(inputDirectory, gridFil);
344 reuseGridMap[gridID] = grid;
351 os << endl <<
"ERROR in GeoTessModel::" + funcName << endl
352 <<
"gridIDs in model file and existingGrid are not equal: "
353 << endl <<
" Model File gridID = " << gridID << endl
354 <<
" Grid File gridID = " << grid->
getGridID() << endl;
361 grid->addReference();
399 GeoTessModel(
const string& inputFile,
const string& relativeGridPath);
446 GeoTessModel(
const string& inputFile,
const string& relativeGridPath,
447 vector<int>& attributeFilter);
463 GeoTessModel(
const string& modelInputFile, vector<int>& attributeFilter);
554 GeoTessModel* loadModel(
const string& inputFile,
const string& relGridFilePath =
"");
562 static bool isGeoTessModel(
const string& fileName);
585 for (
int i=0; i<getNVertices(); ++i)
586 for (
int j=0; j<getNLayers(); ++j)
604 LONG_INT memory =
sizeof(map<string, GeoTessGrid*>);
608 for (map<string, GeoTessGrid*>::iterator it = reuseGridMap.begin(); it != reuseGridMap.end(); it++)
609 memory += (
LONG_INT)it->first.length() + it->second->getMemory();
777 int getNData(
int vertexId,
int layerId) {
return profiles[vertexId][layerId]->
getNData(); }
793 {
return profiles[vertexId][layerId]->
getRadius(nodeId); }
803 double getDepth(
int vertexId,
int layerId,
int nodeId)
804 {
return getEarthShape().getEarthRadius(grid->
getVertex(vertexId))
805 - profiles[vertexId][layerId]->getRadius(nodeId); }
819 return data == NULL ? NaN_DOUBLE : data->
getDouble(attributeIndex);
831 float getValueFloat(
int vertexId,
int layerId,
int nodeId,
int attributeIndex)
834 return data == NULL ? NaN_FLOAT : data->
getFloat(attributeIndex);
849 return data == NULL ? LONG_MIN : data->
getLong(attributeIndex);
861 int getValueInt(
int vertexId,
int layerId,
int nodeId,
int attributeIndex)
864 return data == NULL ? INT_MIN : data->
getInt(attributeIndex);
876 short getValueShort(
int vertexId,
int layerId,
int nodeId,
int attributeIndex)
879 return data == NULL ? SHRT_MIN : data->
getShort(attributeIndex);
894 return data == NULL ? CHAR_MIN : data->
getByte(attributeIndex);
907 void setValue(
int vertexId,
int layerId,
int nodeId,
int attributeIndex, T value)
908 { profiles[vertexId][layerId]->
getData(nodeId)->
setValue(attributeIndex, value); }
916 {
return getPointMap()->getPointRadius(pointIndex); }
925 {
return getPointMap()->getPointDepth(pointIndex); }
936 GeoTessData* data = getPointMap()->getPointData(pointIndex);
937 return data == NULL ? NaN_DOUBLE : data->
getDouble(attributeIndex);
949 GeoTessData* data = getPointMap()->getPointData(pointIndex);
950 return data == NULL ? NaN_FLOAT : data->
getFloat(attributeIndex);
962 GeoTessData* data = getPointMap()->getPointData(pointIndex);
963 return data == NULL ? LONG_MIN : data->
getLong(attributeIndex);
975 GeoTessData* data = getPointMap()->getPointData(pointIndex);
976 return data == NULL ? INT_MIN : data->
getInt(attributeIndex);
988 GeoTessData* data = getPointMap()->getPointData(pointIndex);
989 return data == NULL ? SHRT_MIN : data->
getShort(attributeIndex);
1001 GeoTessData* data = getPointMap()->getPointData(pointIndex);
1002 return data == NULL ? CHAR_MIN : data->
getByte(attributeIndex);
1012 template<
typename T>
1013 void setValue(
int pointIndex,
int attributeIndex, T value)
1015 GeoTessData* data = getPointMap()->getPointData(pointIndex);
1016 if (data != NULL) data->
setValue(attributeIndex, value);
1034 virtual bool operator == (
const GeoTessModel& other)
const;
1044 virtual bool operator != (
const GeoTessModel& other)
const {
return !(*
this == other); } ;
1048 return getProfile(0, 0)->getType() == GeoTessProfileType::SURFACE
1049 || getProfile(0, 0)->getType() == GeoTessProfileType::SURFACE_EMPTY;
1134 if (polygon == NULL)
1160 for (
int layer=0; layer<getNLayers(); ++layer)
1161 layerCount[layer] = 0;
1165 for (
int v=0; v<getNVertices(); ++v)
1168 for (
int layer=0; layer<getNLayers(); ++layer)
1173 for (
int n=0; n<p->
getNData(); ++n)
1175 ++layerCount[layer];
1178 layerCount[layer] += pp[layer]->
getNData();
1192 return profiles[vertex][layer];
1203 return profiles[vertex];
1237 template<
typename T>
1238 void setProfile(
int vertex,
int layer, vector<float>& radii, vector<vector<T> >& values)
1240 if (getConnectedVertices(layer).count(vertex) == 1)
1241 setProfile(vertex, layer, GeoTessProfile::newProfile(radii, values));
1260 template<
typename T>
1262 float* radii,
const int& nRadii,
1263 T** values,
const int& nNodes,
const int& nAttributes)
1265 if (getConnectedVertices(layer).count(vertex) == 1)
1266 setProfile(vertex, layer, GeoTessProfile::newProfile(radii, nRadii, values, nNodes, nAttributes));
1290 template<
typename T>
1291 void setProfile(
const int& vertex,
const int& layer,
float* radii,
const int& nRadii)
1302 template<
typename T>
1315 template<
typename T>
1316 void setProfile(
const int& vertex, T* values,
const int& nAttributes)
1350 void writeModel(
const string& outputFile,
const string& gridFileName);
1367 layerCount.resize(metaData->
getNLayers(), 0);
1371 for (
int vtx=0; vtx<getNVertices(); ++vtx)
1374 for (
int layer = 0; layer < metaData->
getNLayers(); ++layer)
1378 for (
int n = 0; n < p->
getNData(); ++n)
1380 ++layerCount[layer];
1383 layerCount[layer] += pp[layer]->
getNData();
1401 vector<int> totalCount;
1402 for (
int profileType=0; profileType<GeoTessProfileType::size(); ++profileType)
1403 totalCount.push_back(0);
1405 for (
int layer = 0; layer < getNLayers(); ++layer)
1407 vector<int> typeCount;
1409 for (
int profileType=0; profileType<GeoTessProfileType::size(); ++profileType)
1410 typeCount.push_back(0);
1412 count.push_back(typeCount);
1415 for (
int layer = 0; layer < getNLayers(); ++layer)
1417 for (
int vertex = 0; vertex < metaData->
getNVertices(); ++vertex)
1420 count[layer][pType] += 1;
1421 totalCount[pType] += 1;
1425 count.push_back(totalCount);
1461 template<
typename T>
1463 const vector<string>& attributeUnits, T fillValue)
1465 if (profiles == NULL)
1468 os << endl <<
"ERROR in GeoTessModel::initializeData" << endl
1469 <<
"Attempting to initialize the model data before Profiles" << endl
1470 <<
"have been specified (profiles == NULL)" << endl;
1474 const GeoTessDataType& newDataType = GeoTessDataType::getDataType(fillValue);
1475 int nAttributesNew = attributeNames.size();
1477 int newDataTypeOrdinal = newDataType.
ordinal();
1482 if (newDataTypeOrdinal != oldDataTypeOrdinal || nAttributesNew != metaData->
getNAttributes())
1486 T* newValues =
new T[nAttributesNew];
1487 for (
int i=0; i<nAttributesNew; ++i)
1488 newValues[i] = fillValue;
1491 vector<GeoTessData*> data;
1492 for (
int v = 0; v < getNVertices(); ++v)
1493 for (
int lid = 0; lid < getNLayers(); ++lid)
1495 profile = profiles[v][lid];
1498 for (
int n = 0; n < profile->
getNData(); ++n)
1501 data.push_back(GeoTessData::getData(newValues, nAttributesNew));
1526 template<
typename T>
1528 const string& attributeUnits, T fillValue)
1530 vector<string> names;
1531 CPPUtils::tokenizeString(attributeNames,
";", names);
1532 vector<string> units;
1533 CPPUtils::tokenizeString(attributeUnits,
";", units);
1534 initializeData(names, units, fillValue);
1561 void getWeights(
const double* pointA,
const double* pointB,
const double& pointSpacing,
const double& radius,
1587 void getWeights(
GeoTessGreatCircle& greatCircle,
const double& pointSpacing,
const double& radius,
1613 void getWeights(
const vector<double*>& rayPath,
1614 const vector<double>& radii,
1615 const vector<int>& layerIds,
1618 map<int, double>& weights);
1644 void getWeights(
double** rayPath,
double* radii,
int* layerIds,
const int& numPoints,
1647 map<int, double>& weights);
1661 double getPathIntegral(
const int& attribute,
const map<int, double>& weights);
1696 double getPathIntegral(
const int& attribute,
1697 double** rayPath,
double* radii,
int* layerIds,
const int& numPoints,
1699 map<int, double>* weights = NULL);
1733 double getPathIntegral(
const int& attribute,
1734 const vector<double*>& rayPath,
const vector<double>& radii,
const vector<int>& layerIds,
1736 map<int, double>* weights = NULL);
1773 double getPathIntegral2D(
const int& attribute,
1774 const double* firstPoint,
const double* lastPoint,
double pointSpacing,
1776 map<int, double>* weights = NULL);
1812 double getPathIntegral2D(
const int& attribute,
1815 map<int, double>* weights = NULL);
1825 GeoTessModel(
const string& inputFile,
const string& relativeGridPath,
1827 GeoTessModel(
const string& modelInputFile, vector<int>& attributeFilter,
1859 bool isSupportedFormatVersion(
int frmtVrsn) {
return (frmtVrsn == 1) ?
true :
false; }
1866 bool testLayerRadii();
1876 #endif // GEOTESSMODEL_OBJECT_H
GeoTessGrid * loadGrid(const string &inputFile)
Load GeoTessGrid object from a File.
void setActiveRegion()
Populates the PointMap such that every node in the entire model is within the active region...
GeoTessGrid & getGrid()
Return a reference to the grid object.
Definition: GeoTessModel.h:697
virtual int getNRadii() const
Get the number of radii that comprise this profile.
void setProfile(int vertex, int layer, vector< float > &radii, vector< vector< T > > &values)
Replace the Profile object at the specified vertex and layer with a new one.
Definition: GeoTessModel.h:1238
void setEarthShape(const string &earthShapeName)
Specify the name of the ellipsoid that is to be used to convert between geocentric and geographic lat...
Definition: GeoTessModel.h:685
virtual double getDouble(int attributeIndex) const
Retrieve the value of the attribute at the specified attribute index as a double value.
virtual float getFloat(int attributeIndex) const
Retrieve the value of the attribute at the specified attribute index as a float value.
An ordered list of points on the surface of a unit sphere that define a closed polygon.
Definition: GeoTessPolygon.h:111
void setValue(int pointIndex, int attributeIndex, T value)
Modify the attribute value stored at the specified vertex, layer, node, attribute.
Definition: GeoTessModel.h:1013
Relationships between vertices (2D positions in a tessellation), nodes (1D positions along a radial P...
Definition: GeoTessPointMap.h:74
A Profile object that defines a single Data object and no radius value.
Definition: GeoTessProfileSurface.h:76
void getLayerCount(vector< int > &layerCount, const bool &activeOnly)
Retrieve the number of points in each layer of the model.
Definition: GeoTessModel.h:1365
const GeoTessGrid & getGrid() const
Return a reference to the grid object.
Definition: GeoTessModel.h:691
void setActiveRegion()
Set the active region such that it encompasses all the nodes in the model.
Definition: GeoTessModel.h:1099
LONG_INT getValueLong(int pointIndex, int attributeIndex)
Return the value of the attribute at the specified pointIndex, attributeIndex, cast to a LONG_INT if ...
Definition: GeoTessModel.h:960
const double * getVertex(int vertex) const
Retrieve the unit vector that corresponds to the specified vertex.
Definition: GeoTessGrid.h:630
A Profile object that defines a single Data object and no radius value.
Definition: GeoTessProfileSurfaceEmpty.h:77
int getNData(int vertexId, int layerId)
Return the number of Data objects that are specified in the Profile at vertexId, layerId.
Definition: GeoTessModel.h:777
Information about an interpolated point at an arbitrary position in a model.
Definition: GeoTessPosition.h:101
void setProfile(const int &vertex, vector< T > &values)
Replace the Profile object at the specified vertex with a new one of type ProfileSurface, which supports 2D Earth models.
Definition: GeoTessModel.h:1303
short getValueShort(int vertexId, int layerId, int nodeId, int attributeIndex)
Return the value of the attribute at the specified vertexId, layerId, nodeId, attributeIndex, cast to a short if necessary.
Definition: GeoTessModel.h:876
float getValueFloat(int pointIndex, int attributeIndex)
Return the value of the attribute at the specified pointIndex, attributeIndex, cast to a float if nec...
Definition: GeoTessModel.h:947
Definition: ArrayReuse.h:55
bool isPopulated()
Determine whether or not this PointMap is populated.
Definition: GeoTessPointMap.h:215
Opens a file for binary read and write access.
Definition: IFStreamBinary.h:79
virtual LONG_INT getLong(int attributeIndex) const
Retrieve the value of the attribute at the specified attribute index as a LONG_INT value...
Enumeration of the interpolation algorithms supported by GeoTess including LINEAR, NATURAL_NEIGHBOR and CUBIC_SPLINE.
Definition: GeoTessInterpolatorType.h:71
Manages the geometry and topology of one or more multi-level triangular tessellations of a unit spher...
Definition: GeoTessGrid.h:166
int getValueInt(int vertexId, int layerId, int nodeId, int attributeIndex)
Return the value of the attribute at the specified vertexId, layerId, nodeId, attributeIndex, cast to a int if necessary.
Definition: GeoTessModel.h:861
static void clearReuseGrid()
GeoTessModel will attempt to reuse grids that it has already loaded into memory when a new model trie...
Definition: GeoTessModel.h:627
bool is3D()
Definition: GeoTessModel.h:1052
double getValueDouble(int vertexId, int layerId, int nodeId, int attributeIndex)
Return the value of the attribute at the specified vertexId, layerId, nodeId, attributeIndex, cast to a double if necessary.
Definition: GeoTessModel.h:816
int getNVertices() const
Returns the number of vertices in the vectices array.
Definition: GeoTessGrid.h:820
static string getGridID(const string &fileName)
Open the specified file using the appropriate format, and read only enough of the file to retrieve th...
Enumeration of supported DataType including DOUBLE, FLOAT, LONG, INT, SHORT and BYTE.
Definition: GeoTessDataType.h:67
void getLayerCount(bool activeOnly, int *layerCount)
Retrieve the number of points in each layer of the model.
Definition: GeoTessModel.h:1158
virtual GeoTessData ** getData()
Retrieve a shallow copy of the array of Data objects associated with this Profile.
void setActiveRegion(const string &polygon)
Set the active region to encompass only the nodes contained within the specified Polygon.
Definition: GeoTessModel.h:1116
int getNAttributes()
Return the number of attributes that are associated with each node in the model.
Definition: GeoTessModel.h:783
byte getValueByte(int vertexId, int layerId, int nodeId, int attributeIndex)
Return the value of the attribute at the specified vertexId, layerId, nodeId, attributeIndex, cast to a byte if necessary.
Definition: GeoTessModel.h:891
GeoTessPolygon * getPolygon()
Retrieve the pointer to the Polygon or Polygon3D object that supports this PointMap.
Definition: GeoTessPointMap.h:200
virtual const GeoTessProfileType & getType() const
One of EMPTY, THIN, CONSTANT, NPOINT, SURFACE.
static LONG_INT getReuseGridMapMemory()
GeoTessModel will attempt to reuse grids that it has already loaded into memory when a new model trie...
Definition: GeoTessModel.h:600
Manages information about a great circle path that extends from one point to another point...
Definition: GeoTessGreatCircle.h:168
void setProfile(int vertex, int layer, vector< float > &radii)
Replace the Profile object at the specified vertex and layer with a new ProfileEmpty object...
Definition: GeoTessModel.h:1278
static int getReuseGridMapSize()
GeoTessModel will attempt to reuse grids that it has already loaded into memory when a new model trie...
Definition: GeoTessModel.h:620
double getDepth(int vertexId, int layerId, int nodeId)
Return the depth below surface of current EarthShape in km of the node at vertexId, layerId, nodeId.
Definition: GeoTessModel.h:803
byte getValueByte(int pointIndex, int attributeIndex)
Return the value of the attribute at the specified pointIndex, attributeIndex, cast to a byte if nece...
Definition: GeoTessModel.h:999
bool is2D()
Definition: GeoTessModel.h:1046
const set< int > & getConnectedVertices(int layerIndex)
Return a reference to the set of the indexes of all the vertices that are connected together by ...
Definition: GeoTessModel.h:1089
int getNRadii(int vertexId, int layerId)
Return the number of radii that are specified in the Profile at vertexId, layerId.
Definition: GeoTessModel.h:768
An exception class for all GeoTess objects.
Definition: GeoTessException.h:65
virtual byte getByte(int attributeIndex) const
Retrieve the value of the attribute at the specified attribute index as a bute value.
Enumeration of the optimization strategies supported by GeoTess including OptimizationType::SPEED and...
Definition: GeoTessOptimizationType.h:66
double getDepth(int pointIndex)
Return the depth below surface of the current EarthShape in km of the node at pointIndex.
Definition: GeoTessModel.h:924
A Profile object that defines two radii at the bottom and top of the associated layer, and no Data.
Definition: GeoTessProfileEmpty.h:74
LONG_INT getValueLong(int vertexId, int layerId, int nodeId, int attributeIndex)
Return the value of the attribute at the specified vertexId, layerId, nodeId, attributeIndex, cast to a LONG_INT if necessary.
Definition: GeoTessModel.h:846
void setGridInputFile(const string &gridFile)
Set the grid input file name.
Definition: GeoTessGrid.h:605
#define byte
signed-byte typedef
Definition: CPPGlobals.h:94
Opens ascii file for read and write access.
Definition: IFStreamAscii.h:80
GeoTessProfile ** getProfiles(int vertex)
Get a reference to the array of Profile objects for the specified vertex.
Definition: GeoTessModel.h:1201
virtual int getInt(int attributeIndex) const
Retrieve the value of the attribute at the specified attribute index as a int value.
void profileCount(vector< vector< int > > &count)
Retrieve the number of Profiles of each ProfileType in each layer of the model.
Definition: GeoTessModel.h:1394
void writeModel(const string &outputFile)
Write the model to file.
Definition: GeoTessModel.h:1334
virtual void setData(int index, GeoTessData *data)
Replace the Data currently associated with this Profile with new Data.
Defines the ellipsoid that is to be used to convert between geocentric and geographic latitude and be...
Definition: EarthShape.h:85
GeoTessMetaData & getMetaData()
Return a reference to the GeoTessMetaData object associated with this model.
Definition: GeoTessModel.h:706
virtual GeoTessData & setValue(int attributeIndex, double v)
Set the value of the specified attributeIndex and return a reference to this Data object...
void setActiveRegion(GeoTessPolygon *polygon)
Set the active region to encompass only the nodes contained within the specified Polygon object...
Definition: GeoTessModel.h:1132
GeoTessProfile *** getProfiles() const
Get a reference to all Profile objects.
Definition: GeoTessModel.h:1210
virtual LONG_INT getMemory()
void initializeData(const vector< string > &attributeNames, const vector< string > &attributeUnits, T fillValue)
Reset all the Data objects in the model.
Definition: GeoTessModel.h:1462
float getValueFloat(int vertexId, int layerId, int nodeId, int attributeIndex)
Return the value of the attribute at the specified vertexId, layerId, nodeId, attributeIndex, cast to a float if necessary.
Definition: GeoTessModel.h:831
GeoTessProfile * getProfile(int vertex, int layer)
Get a reference to the Profile object for the specified vertex and layer.
Definition: GeoTessModel.h:1190
GeoTessPointMap * getPointMap()
Retrieve a pointer to the pointMap, which is an nPoints by 3 array of indexes.
Definition: GeoTessModel.h:1074
void setProfile(const int &vertex, const int &layer, float *radii, const int &nRadii)
Replace the Profile object at the specified vertex and layer with a new ProfileEmpty object...
Definition: GeoTessModel.h:1291
double getValueDouble(int pointIndex, int attributeIndex)
Return the value of the attribute at the specified pointIndex, attributeIndex, cast to a double if ne...
Definition: GeoTessModel.h:934
EarthShape & getEarthShape()
Retrieve a reference to the ellipsoid that is stored in this GeoTessModel.
Definition: GeoTessModel.h:657
#define LONG_INT
Definition: CPPGlobals.h:111
GeoTessPolygon * getPolygon()
Retrieve the pointer to the Polygon or Polygon3D object that supports this PointMap.
Definition: GeoTessModel.h:1148
Abstract class that manages the radii and data values that span a single layer associated with a sing...
Definition: GeoTessProfile.h:96
Abstract base class that manages the data values attached to a single grid point. ...
Definition: GeoTessData.h:75
int getValueInt(int pointIndex, int attributeIndex)
Return the value of the attribute at the specified pointIndex, attributeIndex, cast to a int if neces...
Definition: GeoTessModel.h:973
virtual int getPointIndex(int nodeIndex) const
Get the pointIndex that corresponds to the supplied nodeIndex.
Top level class that manages the GeoTessMetaData, GeoTessGrid and GeoTessData that comprise a 3D Eart...
Definition: GeoTessModel.h:119
short getValueShort(int pointIndex, int attributeIndex)
Return the value of the attribute at the specified pointIndex, attributeIndex, cast to a short if nec...
Definition: GeoTessModel.h:986
virtual void getValues(double values[], const int &n)
Copy the first n data values into the supplied array.
void initializeData(const string &attributeNames, const string &attributeUnits, T fillValue)
Replace all the Data objects in the entire model.
Definition: GeoTessModel.h:1527
double getRadius(int pointIndex)
Return the radius in km of the node at pointIndex.
Definition: GeoTessModel.h:915
void setProfile(const int &vertex)
Replace the Profile object at the specified vertex with a new one of type ProfileSurfEmpty, which supports 2D Earth models.
Definition: GeoTessModel.h:1324
void setValue(int vertexId, int layerId, int nodeId, int attributeIndex, T value)
Modify the attribute value stored at the specified vertex, layer, node, attribute.
Definition: GeoTessModel.h:907
const set< int > & getVertexIndicesTopLevel(const int &tessId)
Retrieve a set containing the indices of all the vertices that are connected together by triangles on...
Definition: GeoTessGrid.h:813
static string class_name()
Returns the class name.
Definition: GeoTessModel.h:541
int getNVertices() const
Return number of vertices in the 2D geographic grid.
Definition: GeoTessModel.h:753
virtual LONG_INT getMemory()
Return the amount of memory currently occupied by this GeoTessModel object NOT INCLUDING THE GRID...
Definition: GeoTessModel.h:578
double getRadius(int vertexId, int layerId, int nodeId)
Return the radius in km of the node at vertexId, layerId, nodeId.
Definition: GeoTessModel.h:792
int ordinal() const
Returns this Enums ordinal.
Definition: GeoTessEnumType.h:148
void setProfile(const int &vertex, const int &layer, float *radii, const int &nRadii, T **values, const int &nNodes, const int &nAttributes)
Replace the Profile object at the specified vertex and layer with a new one.
Definition: GeoTessModel.h:1261
int getNPoints()
Retrieve the number of points in the model, including all nodes along all profiles at all grid vertic...
Definition: GeoTessModel.h:1024
#define GEOTESS_EXP_IMP
Definition: CPPGlobals.h:71
int getNLayers() const
Return the number of layers that comprise the model.
Definition: GeoTessModel.h:759
virtual short getShort(int attributeIndex) const
Retrieve the value of the attribute at the specified attribute index as a short value.
void setProfile(const int &vertex, T *values, const int &nAttributes)
Replace the Profile object at the specified vertex with a new one of type ProfileSurface, which supports 2D Earth models.
Definition: GeoTessModel.h:1316
virtual float getRadius(int i) const
Get the i'th radius value in this profile in km.
LONG_INT getMemory()
Definition: GeoTessPointMap.h:152
virtual int getNData() const
Get the number of Data objects that comprise this profile.