36 #ifndef POINTMAP_OBJECT_H
37 #define POINTMAP_OBJECT_H
114 vector<vector<int> > pointMap;
155 + (
LONG_INT)(pointMap.capacity() *
sizeof(vector<int>)
156 + pointMap.size() * 3 * (
LONG_INT)
sizeof(
int));
165 void setActiveRegion();
187 void setActiveRegion(
const string& polygonFileName)
189 GeoTessPolygon* plgn = GeoTessPolygonFactory::getPolygon(polygonFileName);
190 setActiveRegion(plgn);
224 return pointMap.size();
235 int getVertexIndex(
int pointIndex)
237 return pointMap[pointIndex][0];
248 int getTessId(
int pointIndex)
250 return metaData.getTessellation(pointMap[pointIndex][1]);
261 int getLayerIndex(
int pointIndex)
263 return pointMap[pointIndex][1];
274 int getNodeIndex(
int pointIndex)
276 return pointMap[pointIndex][2];
287 const vector<int>& getPointIndices(
int pointIndex)
289 return pointMap[pointIndex];
302 int getPointIndex(
int vertex,
int layer,
int node)
304 return profiles[vertex][layer]->getPointIndex(node);
317 int getPointIndexLast(
int vertex,
int layer)
319 return profiles[vertex][layer]->getPointIndex(profiles[vertex][layer]->getNData()-1);
332 int getPointIndexFirst(
int vertex,
int layer)
334 return profiles[vertex][layer]->getPointIndex(0);
342 vector<int>& map = pointMap[pointIndex];
343 profiles[map[0]][map[1]]->setData(map[2], data);
353 vector<int>& map = pointMap[pointIndex];
354 return profiles[map[0]][map[1]]->
getData(map[2]);
365 template <
typename T>
366 void setPointValue(
int pointIndex,
int attributeIndex, T value)
368 vector<int>& map = pointMap[pointIndex];
380 double getPointValue(
int pointIndex,
int attributeIndex)
382 vector<int>& map = pointMap[pointIndex];
383 return profiles[map[0]][map[1]]->
getValue(attributeIndex, map[2]);
395 double getPointValueDouble(
int pointIndex,
int attributeIndex)
397 vector<int>& map = pointMap[pointIndex];
398 return profiles[map[0]][map[1]]->getData(map[2])->getDouble(attributeIndex);
410 float getPointValueFloat(
int pointIndex,
int attributeIndex)
412 vector<int>& map = pointMap[pointIndex];
413 return profiles[map[0]][map[1]]->getData(map[2])->getFloat(attributeIndex);
425 LONG_INT getPointValueLong(
int pointIndex,
int attributeIndex)
427 vector<int>& map = pointMap[pointIndex];
428 return profiles[map[0]][map[1]]->getData(map[2])->getLong(attributeIndex);
440 int getPointValueInt(
int pointIndex,
int attributeIndex)
442 vector<int>& map = pointMap[pointIndex];
443 return profiles[map[0]][map[1]]->getData(map[2])->getInt(attributeIndex);
455 short getPointValueShort(
int pointIndex,
int attributeIndex)
457 vector<int>& map = pointMap[pointIndex];
458 return profiles[map[0]][map[1]]->getData(map[2])->getShort(attributeIndex);
470 byte getPointValueByte(
int pointIndex,
int attributeIndex)
472 vector<int>& map = pointMap[pointIndex];
473 return profiles[map[0]][map[1]]->getData(map[2])->getByte(attributeIndex);
485 bool isNaN(
int pointIndex,
int attributeIndex)
487 vector<int>& map = pointMap[pointIndex];
488 return profiles[map[0]][map[1]]->isNaN(map[2], attributeIndex);
499 void getPointVector(
int pointIndex,
double* v)
501 vector<int>& map = pointMap[pointIndex];
502 const double* vv = grid.getVertex(map[0]);
503 double r = profiles[map[0]][map[1]]->getRadius(map[2]);
515 const double* getPointUnitVector(
int pointIndex)
const
517 return grid.getVertex(pointMap[pointIndex][0]);
526 double getPointRadius(
int pointIndex)
528 vector<int>& map = pointMap[pointIndex];
529 return profiles[map[0]][map[1]]->getRadius(map[2]);
538 double getPointDepth(
int pointIndex)
540 vector<int>& map = pointMap[pointIndex];
541 return GeoTessUtils::getEarthRadius(
542 grid.getVertex(pointMap[pointIndex][0]))
543 - profiles[map[0]][map[1]]->getRadius(map[2]);
553 double getDistance3D(
int pointIndex1,
int pointIndex2)
555 vector<int>& m1 = pointMap[pointIndex1];
556 vector<int>& m2 = pointMap[pointIndex2];
557 return GeoTessUtils::getDistance3D(grid.getVertex(m1[0]),
558 profiles[m1[0]][m1[1]]->getRadius(m1[2]), grid.getVertex(m2[0]),
559 profiles[m2[0]][m2[1]]->getRadius(m2[2]));
596 void getPointNeighbors(set<int>& pointNeighbors,
int pointIndex);
603 string getPointLatLonString(
int pointIndex)
605 return GeoTessUtils::getLatLonString(getPointUnitVector(pointIndex));
613 string toString(
int pointIndex)
616 string frmt =
"%8.3f";
617 sprintf(s, frmt.c_str(), getPointDepth(pointIndex));
618 return GeoTessUtils::getLatLonString(getPointUnitVector(pointIndex))
627 #endif // POINTMAP_OBJECT_H