//***************************************************************************** // METHOD: ossimRpcModel::lineSampleToWorld() // // Overrides base class implementation. Performs DEM intersection. //***************************************************************************** void ossimRpcModel::lineSampleToWorld(const ossimDpt& imagePoint, ossimGpt& worldPoint) const { //--- // Under debate... (drb 20130610) // this seems to be more accurate for the round trip //--- #if 0 if(!imagePoint.hasNans()) { lineSampleHeightToWorld(imagePoint, worldPoint.height(), worldPoint); } else { worldPoint.makeNan(); } #else if(!imagePoint.hasNans()) { ossimEcefRay ray; imagingRay(imagePoint, ray); ossimElevManager::instance()->intersectRay(ray, worldPoint); } else { worldPoint.makeNan(); } #endif }
void ossimPpjFrameSensor::lineSampleToWorld(const ossimDpt& imagePoint, ossimGpt& worldPt) const { ossimEcefRay ray; imagingRay(imagePoint, ray); ossimElevManager::instance()->intersectRay(ray, worldPt, m_averageProjectedHeight); }
void ossimBuckeyeSensor::lineSampleToWorld(const ossimDpt& image_point, ossimGpt& gpt) const { if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleToWorld:entering..." << std::endl; if(image_point.hasNans()) { gpt.makeNan(); return; } //*** // Determine imaging ray and invoke elevation source object's services to // intersect ray with terrain model: //*** ossimEcefRay ray; imagingRay(image_point, ray); ossimElevManager::instance()->intersectRay(ray, gpt); if (traceDebug()) { ossimNotify(ossimNotifyLevel_DEBUG) << "image_point = " << image_point << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << "ray = " << ray << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << "gpt = " << gpt << std::endl; } if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleToWorld: returning..." << std::endl; return; }
void rspfLandSatModel::lineSampleHeightToWorld(const rspfDpt& image_point, const double& height, rspfGpt& gpt) const { if (traceExec()) rspfNotify(rspfNotifyLevel_DEBUG) << "DEBUG rspfLandSatModel::lineSampleHeightToWorld: entering..." << std::endl; #if 0 if (!insideImage(image_point)) { gpt = extrapolate(image_point, height); if (traceExec()) rspfNotify(rspfNotifyLevel_DEBUG) << "DEBUG rspfLandSatModel::lineSampleHeightToWorld: returning..." << std::endl; return; } #endif rspfEcefRay imaging_ray; imagingRay(image_point, imaging_ray); //rspfEcefPoint Pecf (imaging_ray.intersectAboveEarthEllipsoid(height)); //gpt = rspfGpt(Pecf); if (m_proj==NULL) { rspfEcefPoint Pecf (imaging_ray.intersectAboveEarthEllipsoid(height)); gpt = rspfGpt(Pecf); } else { rspfEcefPoint Pecf (imaging_ray.intersectAboveEarthEllipsoid(height,m_proj->getDatum())); gpt = rspfGpt(Pecf,m_proj->getDatum()); } }
void ossimCsmSensorModel::lineSampleToWorld(const ossimDpt& image_point, ossimGpt& gpt) const { if(image_point.hasNans()) { gpt.makeNan(); return; } //*** // Determine imaging ray and invoke elevation source object's services to // intersect ray with terrain model: //*** ossimEcefRay ray; imagingRay(image_point, ray); ossimElevManager::instance()->intersectRay(ray, gpt); }
void rspfBuckeyeSensor::lineSampleHeightToWorld(const rspfDpt& image_point, const double& heightEllipsoid, rspfGpt& worldPoint) const { if (!insideImage(image_point)) { worldPoint.makeNan(); worldPoint = extrapolate(image_point, heightEllipsoid); } else { rspfEcefRay ray; imagingRay(image_point, ray); rspfEcefPoint Pecf (ray.intersectAboveEarthEllipsoid(heightEllipsoid)); worldPoint = rspfGpt(Pecf); } }
void ossimPpjFrameSensor::lineSampleHeightToWorld(const ossimDpt& imagePoint, const double& heightEllipsoid, ossimGpt& worldPt) const { ossimEcefRay ray; imagingRay(imagePoint, ray); double h = (ossim::isnan(heightEllipsoid)||ossim::almostEqual(heightEllipsoid, 0.0))?m_averageProjectedHeight:heightEllipsoid; ossimEcefPoint pecf(ray.intersectAboveEarthEllipsoid(h)); worldPt = ossimGpt(pecf); if (traceDebug()) { ossimNotify(ossimNotifyLevel_DEBUG) << "ossimPpjFrameSensor::lineSampleHeightToWorld DEBUG:" << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << " imagePoint = " << imagePoint << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << " heightEllipsoid = " << heightEllipsoid << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << " ray = " << ray << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << " worldPt = " << worldPt << std::endl; } }
void ossimSpectraboticsRedEdgeModel::lineSampleHeightToWorld(const ossimDpt& image_point, const double& heightEllipsoid, ossimGpt& worldPoint) const { // if (!insideImage(image_point)) // { // worldPoint.makeNan(); // worldPoint = extrapolate(image_point, heightEllipsoid); // } // else { //*** // First establish imaging ray from image point: //*** ossimEcefRay ray; imagingRay(image_point, ray); ossimEcefPoint Pecf (ray.intersectAboveEarthEllipsoid(heightEllipsoid)); worldPoint = ossimGpt(Pecf); } }
void rspfApplanixEcefModel::lineSampleHeightToWorld(const rspfDpt& image_point, const double& heightEllipsoid, rspfGpt& worldPoint) const { if (!insideImage(image_point)) { worldPoint.makeNan(); // worldPoint = extrapolate(image_point, heightEllipsoid); } else { //*** // First establish imaging ray from image point: //*** rspfEcefRay ray; imagingRay(image_point, ray); rspfEcefPoint Pecf (ray.intersectAboveEarthEllipsoid(heightEllipsoid)); worldPoint = rspfGpt(Pecf); } }
void ossimBuckeyeSensor::lineSampleHeightToWorld(const ossimDpt& image_point, const double& heightEllipsoid, ossimGpt& worldPoint) const { if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleHeightToWorld: entering..." << std::endl; if (!insideImage(image_point)) { worldPoint.makeNan(); } else { //*** // First establish imaging ray from image point: //*** ossimEcefRay ray; imagingRay(image_point, ray); ossimEcefPoint Pecf (ray.intersectAboveEarthEllipsoid(heightEllipsoid)); worldPoint = ossimGpt(Pecf); } if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleHeightToWorld: returning..." << std::endl; }
void ossimSpectraboticsRedEdgeModel::lineSampleToWorld(const ossimDpt& image_point, ossimGpt& gpt) const { if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimSpectraboticsRedEdgeModel::lineSampleToWorld:entering..." << std::endl; if(image_point.hasNans()) { gpt.makeNan(); return; } //*** // Extrapolate if image point is outside image: //*** // if (!insideImage(image_point)) // { // gpt.makeNan(); // gpt = extrapolate(image_point); // return; // } //*** // Determine imaging ray and invoke elevation source object's services to // intersect ray with terrain model: //*** ossimEcefRay ray; imagingRay(image_point, ray); ossimElevManager::instance()->intersectRay(ray, gpt); if (traceDebug()) { ossimNotify(ossimNotifyLevel_DEBUG) << "image_point = " << image_point << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << "ray = " << ray << std::endl; ossimNotify(ossimNotifyLevel_DEBUG) << "gpt = " << gpt << std::endl; } if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimSensorModel::lineSampleToWorld: returning..." << std::endl; return; }
void rspfBuckeyeSensor::lineSampleToWorld(const rspfDpt& image_point, rspfGpt& gpt) const { if(image_point.hasNans()) { gpt.makeNan(); return; } rspfEcefRay ray; imagingRay(image_point, ray); rspfElevManager::instance()->intersectRay(ray, gpt); if (traceDebug()) { rspfNotify(rspfNotifyLevel_DEBUG) << "image_point = " << image_point << std::endl; rspfNotify(rspfNotifyLevel_DEBUG) << "ray = " << ray << std::endl; rspfNotify(rspfNotifyLevel_DEBUG) << "gpt = " << gpt << std::endl; } if (traceDebug()) rspfNotify(rspfNotifyLevel_DEBUG) << "DEBUG rspfSensorModel::lineSampleToWorld: returning..." << std::endl; return; }