36 #ifndef POINTMAP_OBJECT_H
37 #define POINTMAP_OBJECT_H
114 vector<vector<int> > pointMap;
158 void setActiveRegion();
180 void setActiveRegion(
const string& polygonFileName)
182 GeoTessPolygon* plgn = GeoTessPolygonFactory::getPolygon(polygonFileName);
183 setActiveRegion(plgn);
217 return pointMap.size();
228 int getVertexIndex(
int pointIndex)
230 return pointMap[pointIndex][0];
241 int getTessId(
int pointIndex)
243 return metaData.getTessellation(pointMap[pointIndex][1]);
254 int getLayerIndex(
int pointIndex)
256 return pointMap[pointIndex][1];
267 int getNodeIndex(
int pointIndex)
269 return pointMap[pointIndex][2];
280 const vector<int>& getPointIndices(
int pointIndex)
282 return pointMap[pointIndex];
295 int getPointIndex(
int vertex,
int layer,
int node)
297 return profiles[vertex][layer]->getPointIndex(node);
310 int getPointIndexLast(
int vertex,
int layer)
312 return profiles[vertex][layer]->getPointIndex(profiles[vertex][layer]->getNData()-1);
325 int getPointIndexFirst(
int vertex,
int layer)
327 return profiles[vertex][layer]->getPointIndex(0);
338 template <
typename T>
339 void setPointValue(
int pointIndex,
int attributeIndex, T value)
341 vector<int>& map = pointMap[pointIndex];
342 profiles[map[0]][map[1]]->getData(map[2])->setValue(attributeIndex,
351 vector<int>& map = pointMap[pointIndex];
352 profiles[map[0]][map[1]]->setData(map[2], data);
362 vector<int>& map = pointMap[pointIndex];
363 return profiles[map[0]][map[1]]->
getData(map[2]);
373 double getPointValue(
int pointIndex,
int attributeIndex)
375 vector<int>& map = pointMap[pointIndex];
376 return profiles[map[0]][map[1]]->
getValue(attributeIndex, map[2]);
388 bool isNaN(
int pointIndex,
int attributeIndex)
390 vector<int>& map = pointMap[pointIndex];
391 return profiles[map[0]][map[1]]->isNaN(map[2], attributeIndex);
402 void getPointVector(
int pointIndex,
double* v)
404 vector<int>& map = pointMap[pointIndex];
405 const double* vv = grid.getVertex(map[0]);
406 double r = profiles[map[0]][map[1]]->getRadius(map[2]);
418 const double* getPointUnitVector(
int pointIndex)
const
420 return grid.getVertex(pointMap[pointIndex][0]);
429 double getPointRadius(
int pointIndex)
431 vector<int>& map = pointMap[pointIndex];
432 return profiles[map[0]][map[1]]->getRadius(map[2]);
441 double getPointDepth(
int pointIndex)
443 vector<int>& map = pointMap[pointIndex];
444 return GeoTessUtils::getEarthRadius(
445 grid.getVertex(pointMap[pointIndex][0]))
446 - profiles[map[0]][map[1]]->getRadius(map[2]);
456 double getDistance3D(
int pointIndex1,
int pointIndex2)
458 vector<int>& m1 = pointMap[pointIndex1];
459 vector<int>& m2 = pointMap[pointIndex2];
460 return GeoTessUtils::getDistance3D(grid.getVertex(m1[0]),
461 profiles[m1[0]][m1[1]]->getRadius(m1[2]), grid.getVertex(m2[0]),
462 profiles[m2[0]][m2[1]]->getRadius(m2[2]));
499 void getPointNeighbors(set<int>& pointNeighbors,
int pointIndex);
506 string getPointLatLonString(
int pointIndex)
508 return GeoTessUtils::getLatLonString(getPointUnitVector(pointIndex));
516 string toString(
int pointIndex)
519 string frmt =
"%8.3f";
520 sprintf(s, frmt.c_str(), getPointDepth(pointIndex));
521 return GeoTessUtils::getLatLonString(getPointUnitVector(pointIndex))
530 #endif // POINTMAP_OBJECT_H