Skip to content
Snippets Groups Projects
Commit 77e8229e authored by Guillaume Pasero's avatar Guillaume Pasero
Browse files

BUG: allow RefineSensorModel to handle failed projections

parent a85526dc
Branches
Tags
No related merge requests found
......@@ -213,6 +213,7 @@ private:
ofs<<"#ref_lon ref_lat elevation predicted_lon predicted_lat predicted_elev x_error_ref(meters) y_error_ref(meters) global_error_ref(meters) x_error(meters) y_error(meters) global_error(meters)"<<std::endl;
}
size_t validPoints=0;
for(TiePointsType::const_iterator it = tiepoints.begin();
it!=tiepoints.end(); ++it)
{
......@@ -220,6 +221,22 @@ private:
sm->ForwardTransformPoint(it->first[0],it->first[1],it->first[2],tmpPoint[0],tmpPoint[1],tmpPoint[2]);
sm_ref->ForwardTransformPoint(it->first[0],it->first[1],it->first[2],tmpPoint_ref[0],tmpPoint_ref[1],tmpPoint_ref[2]);
if (!(std::isfinite(tmpPoint[0]) &&
std::isfinite(tmpPoint[1]) &&
std::isfinite(tmpPoint[2])))
{
otbAppLogWARNING("Can't project tie point at ["<<it->first[0]<<","<<it->first[1]<<","<<it->first[2]<<"] with optimized model!");
continue;
}
if (!(std::isfinite(tmpPoint_ref[0]) &&
std::isfinite(tmpPoint_ref[1]) &&
std::isfinite(tmpPoint_ref[2])))
{
otbAppLogWARNING("Can't project tie point at ["<<it->first[0]<<","<<it->first[1]<<","<<it->first[2]<<"] with original model!");
continue;
}
tmpPoint = rsTransform->TransformPoint(tmpPoint);
tmpPoint_ref = rsTransform->TransformPoint(tmpPoint_ref);
......@@ -260,29 +277,34 @@ private:
meanx_ref += xerror_ref;
meany_ref += yerror_ref;
validPoints++;
}
if (!validPoints)
{
otbAppLogFATAL("No valid points to compute RMSE !");
}
rmse/=tiepoints.size();
rmse/=validPoints;
rmsex/=tiepoints.size();
rmsex/=validPoints;
rmsey/=tiepoints.size();
rmsey/=validPoints;
meanx/=tiepoints.size();
meany/=tiepoints.size();
meanx/=validPoints;
meany/=validPoints;
rmse_ref/=tiepoints.size();
rmse_ref/=validPoints;
rmsex_ref/=tiepoints.size();
rmsex_ref/=validPoints;
rmsey_ref/=tiepoints.size();
rmsey_ref/=validPoints;
meanx_ref/=tiepoints.size();
meany_ref/=tiepoints.size();
meanx_ref/=validPoints;
meany_ref/=validPoints;
double stdevx = std::sqrt(rmsex - meanx * meanx);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment