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);
335 vector<int>& map = pointMap[pointIndex];
336 profiles[map[0]][map[1]]->setData(map[2], data);
346 vector<int>& map = pointMap[pointIndex];
347 return profiles[map[0]][map[1]]->
getData(map[2]);
358 template <
typename T>
359 void setPointValue(
int pointIndex,
int attributeIndex, T value)
361 vector<int>& map = pointMap[pointIndex];
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 double getPointValueDouble(
int pointIndex,
int attributeIndex)
390 vector<int>& map = pointMap[pointIndex];
391 return profiles[map[0]][map[1]]->getData(map[2])->getDouble(attributeIndex);
403 float getPointValueFloat(
int pointIndex,
int attributeIndex)
405 vector<int>& map = pointMap[pointIndex];
406 return profiles[map[0]][map[1]]->getData(map[2])->getFloat(attributeIndex);
418 LONG_INT getPointValueLong(
int pointIndex,
int attributeIndex)
420 vector<int>& map = pointMap[pointIndex];
421 return profiles[map[0]][map[1]]->getData(map[2])->getLong(attributeIndex);
433 int getPointValueInt(
int pointIndex,
int attributeIndex)
435 vector<int>& map = pointMap[pointIndex];
436 return profiles[map[0]][map[1]]->getData(map[2])->getInt(attributeIndex);
448 short getPointValueShort(
int pointIndex,
int attributeIndex)
450 vector<int>& map = pointMap[pointIndex];
451 return profiles[map[0]][map[1]]->getData(map[2])->getShort(attributeIndex);
463 byte getPointValueByte(
int pointIndex,
int attributeIndex)
465 vector<int>& map = pointMap[pointIndex];
466 return profiles[map[0]][map[1]]->getData(map[2])->getByte(attributeIndex);
478 bool isNaN(
int pointIndex,
int attributeIndex)
480 vector<int>& map = pointMap[pointIndex];
481 return profiles[map[0]][map[1]]->isNaN(map[2], attributeIndex);
492 void getPointVector(
int pointIndex,
double* v)
494 vector<int>& map = pointMap[pointIndex];
495 const double* vv = grid.getVertex(map[0]);
496 double r = profiles[map[0]][map[1]]->getRadius(map[2]);
508 const double* getPointUnitVector(
int pointIndex)
const
510 return grid.getVertex(pointMap[pointIndex][0]);
519 double getPointRadius(
int pointIndex)
521 vector<int>& map = pointMap[pointIndex];
522 return profiles[map[0]][map[1]]->getRadius(map[2]);
531 double getPointDepth(
int pointIndex)
533 vector<int>& map = pointMap[pointIndex];
534 return GeoTessUtils::getEarthRadius(
535 grid.getVertex(pointMap[pointIndex][0]))
536 - profiles[map[0]][map[1]]->getRadius(map[2]);
546 double getDistance3D(
int pointIndex1,
int pointIndex2)
548 vector<int>& m1 = pointMap[pointIndex1];
549 vector<int>& m2 = pointMap[pointIndex2];
550 return GeoTessUtils::getDistance3D(grid.getVertex(m1[0]),
551 profiles[m1[0]][m1[1]]->getRadius(m1[2]), grid.getVertex(m2[0]),
552 profiles[m2[0]][m2[1]]->getRadius(m2[2]));
589 void getPointNeighbors(set<int>& pointNeighbors,
int pointIndex);
596 string getPointLatLonString(
int pointIndex)
598 return GeoTessUtils::getLatLonString(getPointUnitVector(pointIndex));
606 string toString(
int pointIndex)
609 string frmt =
"%8.3f";
610 sprintf(s, frmt.c_str(), getPointDepth(pointIndex));
611 return GeoTessUtils::getLatLonString(getPointUnitVector(pointIndex))
620 #endif // POINTMAP_OBJECT_H