42      : m_pointData(new ControlNetFileProtoV0001_PBControlPoint),
 
   43        m_logData(new ControlNetLogDataProtoV0001_Point) {
 
   46    copy(pointObject, 
"PointId",
 
   47         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_id);
 
   48    copy(pointObject, 
"ChooserName",
 
   49         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_choosername);
 
   50    copy(pointObject, 
"DateTime",
 
   51         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_datetime);
 
   52    copy(pointObject, 
"AprioriXYZSourceFile",
 
   53         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_apriorisurfpointsourcefile);
 
   54    copy(pointObject, 
"AprioriRadiusSourceFile",
 
   55         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_aprioriradiussourcefile);
 
   56    copy(pointObject, 
"JigsawRejected",
 
   57         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_jigsawrejected);
 
   58    copy(pointObject, 
"EditLock",
 
   59         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_editlock);
 
   60    copy(pointObject, 
"Ignore",
 
   61         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_ignore);
 
   62    copy(pointObject, 
"AprioriX",
 
   63         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_apriorix);
 
   64    copy(pointObject, 
"AprioriY",
 
   65         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_aprioriy);
 
   66    copy(pointObject, 
"AprioriZ",
 
   67         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_aprioriz);
 
   68    copy(pointObject, 
"AdjustedX",
 
   69         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_adjustedx);
 
   70    copy(pointObject, 
"AdjustedY",
 
   71         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_adjustedy);
 
   72    copy(pointObject, 
"AdjustedZ",
 
   73         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_adjustedz);
 
   74    copy(pointObject, 
"LatitudeConstrained",
 
   75         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_latitudeconstrained);
 
   76    copy(pointObject, 
"LongitudeConstrained",
 
   77         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_longitudeconstrained);
 
   78    copy(pointObject, 
"RadiusConstrained",
 
   79         m_pointData, &ControlNetFileProtoV0001_PBControlPoint::set_radiusconstrained);
 
   83    if (pointObject[
"PointType"][0] == 
"Ground") {
 
   84      m_pointData->set_type(ControlNetFileProtoV0001_PBControlPoint::Ground);
 
   86    else if (pointObject[
"PointType"][0] == 
"Tie") {
 
   87      m_pointData->set_type(ControlNetFileProtoV0001_PBControlPoint::Tie);
 
   90      QString msg = 
"Invalid ControlPoint type [" + pointObject[
"PointType"][0] + 
"].";
 
   94    if (pointObject.hasKeyword(
"AprioriXYZSource")) {
 
   95      QString source = pointObject[
"AprioriXYZSource"][0];
 
   97      if (source == 
"None") {
 
   98        m_pointData->set_apriorisurfpointsource(ControlNetFileProtoV0001_PBControlPoint::None);
 
  100      else if (source == 
"User") {
 
  101        m_pointData->set_apriorisurfpointsource(ControlNetFileProtoV0001_PBControlPoint::User);
 
  103      else if (source == 
"AverageOfMeasures") {
 
  105                           ControlNetFileProtoV0001_PBControlPoint::AverageOfMeasures);
 
  107      else if (source == 
"Reference") {
 
  109                           ControlNetFileProtoV0001_PBControlPoint::Reference);
 
  111      else if (source == 
"Basemap") {
 
  112        m_pointData->set_apriorisurfpointsource(ControlNetFileProtoV0001_PBControlPoint::Basemap);
 
  114      else if (source == 
"BundleSolution") {
 
  116                           ControlNetFileProtoV0001_PBControlPoint::BundleSolution);
 
  119        QString msg = 
"Invalid AprioriXYZSource [" + source + 
"]";
 
  124    if (pointObject.hasKeyword(
"AprioriRadiusSource")) {
 
  125      QString source = pointObject[
"AprioriRadiusSource"][0];
 
  127      if (source == 
"None") {
 
  128        m_pointData->set_aprioriradiussource(ControlNetFileProtoV0001_PBControlPoint::None);
 
  130      else if (source == 
"User") {
 
  131        m_pointData->set_aprioriradiussource(ControlNetFileProtoV0001_PBControlPoint::User);
 
  133      else if (source == 
"AverageOfMeasures") {
 
  135                           ControlNetFileProtoV0001_PBControlPoint::AverageOfMeasures);
 
  137      else if (source == 
"Ellipsoid") {
 
  138        m_pointData->set_aprioriradiussource(ControlNetFileProtoV0001_PBControlPoint::Ellipsoid);
 
  140      else if (source == 
"DEM") {
 
  141        m_pointData->set_aprioriradiussource(ControlNetFileProtoV0001_PBControlPoint::DEM);
 
  143      else if (source == 
"BundleSolution") {
 
  145                           ControlNetFileProtoV0001_PBControlPoint::BundleSolution);
 
  148        QString msg = 
"Invalid AprioriRadiusSource, [" + source + 
"]";
 
  154    if (pointObject.hasKeyword(
"AprioriCovarianceMatrix")) {
 
  155      PvlKeyword &matrix = pointObject[
"AprioriCovarianceMatrix"];
 
  165    if (pointObject.hasKeyword(
"AdjustedCovarianceMatrix")) {
 
  166      PvlKeyword &matrix = pointObject[
"AdjustedCovarianceMatrix"];
 
  177    for (
int groupIndex = 0; groupIndex < pointObject.groups(); groupIndex ++) {
 
  178      PvlGroup &group = pointObject.group(groupIndex);
 
  179      ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure measure;
 
  182      copy(group, 
"SerialNumber",
 
  183           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_serialnumber);
 
  184      copy(group, 
"ChooserName",
 
  185           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_choosername);
 
  186      copy(group, 
"DateTime",
 
  187           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_datetime);
 
  188      copy(group, 
"Diameter",
 
  189           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_diameter);
 
  190      copy(group, 
"EditLock",
 
  191           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_editlock);
 
  192      copy(group, 
"Ignore",
 
  193           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_ignore);
 
  194      copy(group, 
"JigsawRejected",
 
  195           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_jigsawrejected);
 
  196      copy(group, 
"AprioriSample",
 
  197           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_apriorisample);
 
  198      copy(group, 
"AprioriLine",
 
  199           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_aprioriline);
 
  200      copy(group, 
"SampleSigma",
 
  201           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_samplesigma);
 
  202      copy(group, 
"LineSigma",
 
  203           measure, &ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::set_linesigma);
 
  208        double value = 
toDouble(group[
"Sample"][0]);
 
  209        measure.mutable_measurement()->set_sample(value);
 
  213        double value = 
toDouble(group[
"Line"][0]);
 
  214        measure.mutable_measurement()->set_line(value);
 
  218        double value = 
toDouble(group[
"SampleResidual"][0]);
 
  219        measure.mutable_measurement()->set_sampleresidual(value);
 
  223        double value = 
toDouble(group[
"LineResidual"][0]);
 
  224        measure.mutable_measurement()->set_lineresidual(value);
 
  228        if (group[
"Reference"][0].toLower() == 
"true") {
 
  234      QString type = group[
"MeasureType"][0].toLower();
 
  235      if (type == 
"candidate") {
 
  236        measure.set_type(ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::Candidate);
 
  238      else if (type == 
"manual") {
 
  239        measure.set_type(ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::Manual);
 
  241      else if (type == 
"registeredpixel") {
 
  243              ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::RegisteredPixel);
 
  245      else if (type == 
"registeredsubpixel") {
 
  247              ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure::RegisteredSubPixel);
 
  251                         "Unknown measure type [" + type + 
"]",
 
  258      for (
int cmKeyIndex = 0; cmKeyIndex < group.
keywords(); cmKeyIndex ++) {
 
  259        if (group[cmKeyIndex][0] == 
"" 
  260            || group[cmKeyIndex].name() == 
"ZScore" 
  261            || group[cmKeyIndex].name() == 
"ErrorMagnitude") {
 
  267      ControlNetLogDataProtoV0001_Point_Measure measureLogData;
 
  269      for (
int keyIndex = 0; keyIndex < group.
keywords(); keyIndex++) {
 
  271        QString name = dataKeyword.
name();
 
  275        if (name == 
"Obsolete_Eccentricity") {
 
  278        else if (name == 
"GoodnessOfFit") {
 
  281        else if (name ==  
"MinimumPixelZScore") {
 
  284        else if (name ==  
"MaximumPixelZScore") {
 
  287        else if (name == 
"PixelShift") {
 
  290        else if (name == 
"WholePixelCorrelation") {
 
  293        else if (name == 
"SubPixelCorrelation") {
 
  296        else if (name == 
"Obsolete_AverageResidual") {
 
  300          QString msg = 
"Invalid control measure log data name [" + name + 
"]";
 
  308          QString msg = 
"Invalid control measure log data value [" + dataKeyword[0] + 
"]";
 
  312        ControlNetLogDataProtoV0001_Point_Measure_DataEntry logEntry;
 
  313        logEntry.set_datatype(dataType);
 
  314        logEntry.set_datavalue(value);
 
  315        *measureLogData.add_loggedmeasuredata() = logEntry;
 
  320      *
m_logData->add_measures() = measureLogData;
 
  324      QString msg = 
"There is missing required information in the control " 
  325                    "points or measures";