From 36051eadfb5a247fdfa20f8b5f17eba636919a12 Mon Sep 17 00:00:00 2001 From: kledmundson <6842706+kledmundson@users.noreply.github.com> Date: Wed, 29 Nov 2023 19:01:11 -0700 Subject: [PATCH] The cnetedit application has been refactored to be callable; Makefile tests have been removed and replaced by gtests (#5348) * The cnetedit application has been refactored to be callable; Makefile tests have been migrated to gtest format. Addresses #5346. * Removed extraneous variables from FunctionalTestsCnetedit.cpp. Addresses #5346. * Updated gtests; replace cubes with labels. Addresses #5346. * Per review cleaned up sloppy spacing; made global variables static in cnetedit.cpp to avoid issues when linking libisis. Addresses #5346. --- CHANGELOG.md | 3 +- isis/src/control/apps/cnetedit/cnetedit.cpp | 1127 ++++++ isis/src/control/apps/cnetedit/cnetedit.h | 27 + isis/src/control/apps/cnetedit/main.cpp | 1052 +----- isis/src/control/apps/cnetedit/tsts/Makefile | 5 - .../apps/cnetedit/tsts/checkValid/Makefile | 27 - .../apps/cnetedit/tsts/default/Makefile | 6 - .../apps/cnetedit/tsts/editLock/Makefile | 22 - .../apps/cnetedit/tsts/errors/Makefile | 19 - .../apps/cnetedit/tsts/ignore/Makefile | 15 - .../tsts/ignoreMeasuresPoints/Makefile | 12 - .../apps/cnetedit/tsts/ignorePoints/Makefile | 15 - .../apps/cnetedit/tsts/measurelist/Makefile | 39 - .../apps/cnetedit/tsts/noDelete/Makefile | 13 - .../cnetedit/tsts/preservePoints/Makefile | 14 - isis/tests/FunctionalTestsCnetedit.cpp | 2943 +++++++++++++++ .../cnetedit/I07873009RDR.dstr.cub.label.pvl | 387 ++ .../cnetedit/I09477002RDR.dstr.cub.label.pvl | 387 ++ .../cnetedit/I10101002RDR.dstr.cub.label.pvl | 387 ++ .../cnetedit/I10413004RDR.dstr.cub.label.pvl | 387 ++ .../cnetedit/I18400005RDR.dstr.cub.label.pvl | 388 ++ .../cnetedit/I23604003RDR.dstr.cub.label.pvl | 388 ++ .../cnetedit/I24827003RDR.dstr.cub.label.pvl | 388 ++ .../cnetedit/PSP_002733_1880_RED4.crop.pvl | 518 +++ .../cnetedit/PSP_002733_1880_RED5.crop.pvl | 518 +++ isis/tests/data/cnetedit/cnet_108pts.pvl | 3238 +++++++++++++++++ isis/tests/data/cnetedit/cnet_11pts.pvl | 344 ++ isis/tests/data/cnetedit/cnet_35pts.pvl | 1623 +++++++++ isis/tests/data/cnetedit/e0902065.cal.sub.cub | Bin 0 -> 1213120 bytes 29 files changed, 13069 insertions(+), 1223 deletions(-) create mode 100644 isis/src/control/apps/cnetedit/cnetedit.cpp create mode 100644 isis/src/control/apps/cnetedit/cnetedit.h delete mode 100644 isis/src/control/apps/cnetedit/tsts/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/checkValid/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/default/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/editLock/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/errors/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/ignore/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/ignoreMeasuresPoints/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/ignorePoints/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/measurelist/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/noDelete/Makefile delete mode 100644 isis/src/control/apps/cnetedit/tsts/preservePoints/Makefile create mode 100644 isis/tests/FunctionalTestsCnetedit.cpp create mode 100644 isis/tests/data/cnetedit/I07873009RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/I09477002RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/I10101002RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/I10413004RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/I18400005RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/I23604003RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/I24827003RDR.dstr.cub.label.pvl create mode 100644 isis/tests/data/cnetedit/PSP_002733_1880_RED4.crop.pvl create mode 100644 isis/tests/data/cnetedit/PSP_002733_1880_RED5.crop.pvl create mode 100644 isis/tests/data/cnetedit/cnet_108pts.pvl create mode 100644 isis/tests/data/cnetedit/cnet_11pts.pvl create mode 100644 isis/tests/data/cnetedit/cnet_35pts.pvl create mode 100644 isis/tests/data/cnetedit/e0902065.cal.sub.cub diff --git a/CHANGELOG.md b/CHANGELOG.md index 5032061396..768c418fc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,7 +36,8 @@ release. ## [Unreleased] ### Changed -- Cnetedit has been refactored to be callable; old Makefile tests have been removed and replaced by gtests. Issue: [#5322](https://github.com/USGS-Astrogeology/ISIS3/issues/5322), +- Cnetedit has been refactored to be callable; old Makefile tests have been removed and replaced by gtests. Issue: [#5346](https://github.com/USGS-Astrogeology/ISIS3/issues/5346), +- Cnetdiff has been refactored to be callable; old Makefile tests have been removed and replaced by gtests. Issue: [#5322](https://github.com/USGS-Astrogeology/ISIS3/issues/5322), - Removed the `.py` extention from the _isisdataeval_ tool `isisdata_mockup` for consistency and install it in $ISISROOT/bin; added the `--tojson` and `--hasher` option to _isisdata_mockup_ tool improve utility; updated the tool `README.md` documentation to reflect this change, removed help output and trimmed example results; fixed paths to test data in `make_isisdata_mockup.sh`. [#5163](https://github.com/DOI-USGS/ISIS3/pull/5163) - Significantly refactored FASTGEOM processing in findfeatures to accommodate stability and functionality. The scope of the algorithm was taken out of the ImageSource class and isolated to support this feature. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772) - Report better information regarding the behavior of findfeatures, FASTGEOM algorithms, and creation of the output network. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772) diff --git a/isis/src/control/apps/cnetedit/cnetedit.cpp b/isis/src/control/apps/cnetedit/cnetedit.cpp new file mode 100644 index 0000000000..2e290ddafd --- /dev/null +++ b/isis/src/control/apps/cnetedit/cnetedit.cpp @@ -0,0 +1,1127 @@ +/** This is free and unencumbered software released into the public domain. +The authors of ISIS do not claim copyright on the contents of this file. +For more details about the LICENSE terms and the AUTHORS, you will +find files of those names at the top level of this repository. **/ + +/* SPDX-License-Identifier: CC0-1.0 */ + +#include "cnetedit.h" + +#include +#include +#include +#include +#include +#include + +#include "ControlMeasure.h" +#include "ControlNet.h" +#include "ControlNetValidMeasure.h" +#include "ControlPoint.h" +#include "ControlPointList.h" +#include "Cube.h" +#include "FileName.h" +#include "MeasureValidationResults.h" +#include "Progress.h" +#include "Pvl.h" +#include "PvlGroup.h" +#include "PvlKeyword.h" +#include "PvlObject.h" +#include "SerialNumber.h" +#include "SerialNumberList.h" +#include "IException.h" + +using namespace std; + +namespace Isis { + + // Deletion test + bool shouldDelete(ControlPoint *point); + + // Mutator methods + void ignorePoint(ControlNet &cnet, ControlPoint *point, QString cause); + void ignoreMeasure(ControlNet &cnet, ControlPoint *point, + ControlMeasure *measure, QString cause); + void deletePoint(ControlNet &cnet, int cp); + void deleteMeasure(ControlPoint *point, int cm); + + // Edit passes + void populateLog(ControlNet &cnet, bool ignore); + + void unlockPoints(ControlNet &cnet, ControlPointList &cpList); + void ignorePoints(ControlNet &cnet, ControlPointList &cpList); + void lockPoints(ControlNet &cnet, ControlPointList &cpList); + + void unlockCubes(ControlNet &cnet, SerialNumberList &snl); + void ignoreCubes(ControlNet &cnet, SerialNumberList &snl); + void lockCubes(ControlNet &cnet, SerialNumberList &snl); + + void unlockMeasures(ControlNet &cnet, + QMap< QString, QSet * > &editMeasures); + void ignoreMeasures(ControlNet &cnet, + QMap< QString, QSet * > &editMeasures); + void lockMeasures(ControlNet &cnet, + QMap< QString, QSet * > &editMeasures); + + void checkAllMeasureValidity(ControlNet &cnet, SerialNumberList *serialNumbers); + + // Validity test + MeasureValidationResults validateMeasure(const ControlMeasure *measure, + Cube *cube, Camera *camera); + + // Logging helpers + void logResult(QMap *pointsLog, QString pointId, QString cause); + void logResult(QMap *measuresLog, + QString pointId, QString serial, QString cause); + PvlObject createLog(QString label, QMap *pointsMap); + PvlObject createLog(QString label, + QMap *pointsMap, QMap *measuresMap); + + // Global variables + static int numPointsDeleted; + static int numMeasuresDeleted; + + static bool deleteIgnored; + static bool preservePoints; + static bool retainRef; + static bool keepLog; + static bool ignoreAll; + + static QMap *ignoredPoints; + static QMap *ignoredMeasures; + static QMap *retainedReferences; + static QMap *editLockedPoints; + static QMap *editLockedMeasures; + + static ControlNetValidMeasure *cneteditValidator; + + /** + * Edit a control network + * + * @param ui UserInterface object containing parameters + * @return Pvl results log file + * + * @throws IException::User "Unable to open MEASURELIST [FILENAME]" + * @throws IException::User "Line ___ in the MEASURELIST does not contain a Point ID and a cube filename separated by a comma" + */ + Pvl cnetedit(UserInterface &ui) { + + // Construct control net + ControlNet cnet(ui.GetFileName("CNET")); + + // List of IDs mapping to points to be edited + ControlPointList *cpList = nullptr; + if (ui.WasEntered("POINTLIST") && cnet.GetNumPoints() > 0) { + cpList = new ControlPointList(ui.GetFileName("POINTLIST")); + } + + // Serial number list of cubes to be edited + SerialNumberList *cubeSnList = nullptr; + if (ui.WasEntered("CUBELIST") && cnet.GetNumPoints() > 0) { + cubeSnList = new SerialNumberList(ui.GetFileName("CUBELIST")); + } + + // List of paired Point IDs and cube filenames + QMap< QString, QSet * > *editMeasuresList = nullptr; + if (ui.WasEntered("MEASURELIST") && cnet.GetNumPoints() > 0) { + + QFile file(ui.GetFileName("MEASURELIST")); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QString msg = "Unable to open MEASURELIST [" + + file.fileName() + "]"; + throw IException(IException::User, msg, _FILEINFO_); + } + + editMeasuresList = new QMap< QString, QSet * >; + + QTextStream in(&file); + int lineNumber = 1; + while (!in.atEnd()) { + QString line = in.readLine(); + QStringList results = line.split(","); + if (results.size() < 2) { + QString msg = "Line " + QString::number(lineNumber) + " in the MEASURELIST does " + "not contain a Point ID and a cube filename separated by a comma"; + throw IException(IException::User, msg, _FILEINFO_); + } + + if (!editMeasuresList->contains(results[0])) + editMeasuresList->insert(results[0], new QSet); + + FileName cubeName(results[1]); + QString sn = SerialNumber::Compose(cubeName.expanded()); + (*editMeasuresList)[results[0]]->insert(sn); + + lineNumber++; + } + } + + // DefFile and cube serial number list for Validity check + Pvl *defFile = nullptr; + SerialNumberList *snValidationList = nullptr; + if (ui.GetBoolean("CHECKVALID") && cnet.GetNumPoints() > 0) { + cneteditValidator = nullptr; + + // Open DefFile and validate its' keywords and value type + defFile = new Pvl(ui.GetFileName("DEFFILE")); + + // create cube serial number validation list + snValidationList = new SerialNumberList(ui.GetFileName("FROMLIST")); + } + + + // call cnetedit with ControlNet plus list files and/or definition files (if any) + Pvl results = cnetedit(cnet, ui, cpList, cubeSnList, editMeasuresList, defFile, snValidationList); + + // clean up + delete cpList; + cpList = nullptr; + + delete cubeSnList; + cubeSnList = nullptr; + + if (editMeasuresList != nullptr) { + QList points = editMeasuresList->keys(); + for (int i = 0; i < points.size(); i++) delete (*editMeasuresList)[points[i]]; + delete editMeasuresList; + editMeasuresList = nullptr; + } + + delete defFile; + defFile = nullptr; + + delete snValidationList; + snValidationList = nullptr; + + return results; + } + + + /** + * Edit a control network + * + * @param ControlNet cnet + * @param UserInterface ui + * @param ControlPointList cpList + * @param SerialNumberList cubeSnl + * @param QMap< QString, QSet * > editMeasuresList + * @param Pvl defFile + * @param SerialNumberList snValidationList + * + * @return Pvl results log file + * + * @throws IException::User "Invalid Deffile" + */ + Pvl cnetedit(ControlNet &cnet, UserInterface &ui, + ControlPointList *cpList, + SerialNumberList *cubeSnl, + QMap< QString, QSet * > *editMeasuresList, + Pvl *defFile, + SerialNumberList *snValidationList) { + + Pvl results; + + // 2016-12-08 Ian Humphrey - Set the QHash seed, otherwise output is ALWAYS slightly + // different. Note that in Qt4, the seed was constant, but in Qt5, the seed is + // created differently for each process. Fixes #4206. + qSetGlobalQHashSeed(0); + + // Reset the counts of points and measures deleted + numPointsDeleted = 0; + numMeasuresDeleted = 0; + + // Get global user parameters + bool ignore = ui.GetBoolean("IGNORE"); + deleteIgnored = ui.GetBoolean("DELETE"); + preservePoints = ui.GetBoolean("PRESERVE"); + retainRef = ui.GetBoolean("RETAIN_REFERENCE"); + ignoreAll = ui.GetBoolean("IGNOREALL"); + + // Data needed to keep track of ignored/deleted points and measures + keepLog = ui.WasEntered("LOG"); + ignoredPoints = NULL; + ignoredMeasures = NULL; + retainedReferences = NULL; + editLockedPoints = NULL; + editLockedMeasures = NULL; + + // If the user wants to keep a log, go ahead and populate it with all the + // existing ignored points and measures + if (keepLog && cnet.GetNumPoints() > 0) + populateLog(cnet, ignore); + + // List has Points Ids + bool processPoints = false; + if (cpList != nullptr) { + processPoints = true; + } + + // List has Cube file names + bool processCubes = false; + if (cubeSnl != nullptr) { + processCubes = true; + } + + // List has measurelist file names + bool processMeasures = false; + if (editMeasuresList != nullptr) { + processMeasures = true; + } + + if (ui.GetBoolean("UNLOCK")) { + if (processPoints) unlockPoints(cnet, *cpList); + if (processCubes) unlockCubes(cnet, *cubeSnl); + if (processMeasures) unlockMeasures(cnet, *editMeasuresList); + } + + /* + * As a first pass, just try and delete anything that's already ignored + * in the Control Network, if the user wants to delete ignored points and + * measures. Originally, this check was performed last, only if the user + * didn't specify any other deletion methods. However, performing this + * check first will actually improve the running time in cases where there + * are already ignored points and measures in the input network. The added + * cost of doing this check here actually doesn't add to the running time at + * all, because these same checks would need to have been done later + * regardless. + */ + if (deleteIgnored && cnet.GetNumPoints() > 0) { + Progress progress; + progress.SetText("Deleting Ignored in Input"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + if (point->IsIgnored()) { + deletePoint(cnet, cp); + } + else { + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + if (point->GetMeasure(cm)->IsIgnored()) { + if (cm == point->IndexOfRefMeasure() && ignoreAll) { + // If the reference is ignored and IgnoreAll is set, the point must ignored too + ignorePoint(cnet, point, "Reference measure ignored"); + } + else { + deleteMeasure(point, cm); + } + } + } + + // Check if the number of measures in the point is zero or there are too + // few measures in the point and we don't want to preserve them. + if (shouldDelete(point)) { + deletePoint(cnet, cp); + } + } + + progress.CheckStatus(); + } + } + + if (ignore) { + if (processPoints) ignorePoints(cnet, *cpList); + if (processCubes) ignoreCubes(cnet, *cubeSnl); + if (processMeasures) ignoreMeasures(cnet, *editMeasuresList); + + // Perform validity check + if (ui.GetBoolean("CHECKVALID") && cnet.GetNumPoints() > 0) { + cneteditValidator = NULL; + + // First validate DefFile's keywords and value type + Pvl defFile(ui.GetFileName("DEFFILE")); + Pvl pvlTemplate("$ISISROOT/appdata/templates/cnet_validmeasure/validmeasure.def"); + Pvl pvlResults; + pvlTemplate.validatePvl(defFile, pvlResults); + if (pvlResults.groups() > 0 || pvlResults.keywords() > 0) { + results.addLogGroup(pvlResults.group(0)); + + QString sErrMsg = "Invalid Deffile\n"; + throw IException(IException::User, sErrMsg, _FILEINFO_); + } + + // Construct the validator from the user-specified definition file + cneteditValidator = new ControlNetValidMeasure(defFile); + + // User also provided a list of all serial numbers corresponding to every + // cube in the control network + checkAllMeasureValidity(cnet, snValidationList); + + // Delete the validator + if (cneteditValidator != NULL) { + delete cneteditValidator; + cneteditValidator = NULL; + } + + // Log the DEFFILE to the print file + results.addLogGroup(defFile.findGroup("ValidMeasure", Pvl::Traverse)); + } + } + + if (ui.GetBoolean("LOCK")) { + if (processPoints) lockPoints(cnet, *cpList); + if (processCubes) lockCubes(cnet, *cubeSnl); + if (processMeasures) lockMeasures(cnet, *editMeasuresList); + } + + // Log statistics + if (keepLog) { + Pvl outputLog; + + outputLog.addKeyword(PvlKeyword("PointsDeleted", toString(numPointsDeleted))); + outputLog.addKeyword(PvlKeyword("MeasuresDeleted", toString(numMeasuresDeleted))); + + PvlObject lockedLog = createLog( + "EditLocked", editLockedPoints, editLockedMeasures); + outputLog.addObject(lockedLog); + + outputLog.addObject(createLog("RetainedReferences", retainedReferences)); + + // Depending on whether the user chose to delete ignored points and + // measures, the log will either contain reasons for being ignored, or + // reasons for being deleted + PvlObject ignoredLog = createLog( + deleteIgnored ? "Deleted" : "Ignored", ignoredPoints, ignoredMeasures); + outputLog.addObject(ignoredLog); + + // Write the log + QString logFileName = ui.GetFileName("LOG"); + outputLog.write(logFileName); + + // Delete the structures keeping track of the ignored points and measures + delete ignoredPoints; + ignoredPoints = NULL; + + delete ignoredMeasures; + ignoredMeasures = NULL; + + delete retainedReferences; + retainedReferences = NULL; + + delete editLockedPoints; + editLockedPoints = NULL; + + delete editLockedMeasures; + editLockedMeasures = NULL; + } + + // Write the network + cnet.Write(ui.GetFileName("ONET")); + + return results; + } + + + /** + * After any modification to a point's measures or ignored status, this check + * should be performed to determine if the changes should result in the point's + * deletion. + * + * @param point The Control Point recently modified + * + * @return Whether or not the point should be deleted + */ + bool shouldDelete(ControlPoint *point){ + + if(!deleteIgnored) + return false; + + else{ + + if ( point->GetNumMeasures() == 0 && !preservePoints) + return true; + + + if (point->GetType() != ControlPoint::Fixed && point->GetNumMeasures()< 2 ){ + + if(preservePoints && point->GetNumMeasures() == 1) + return false; + + return true; //deleteIgnore = TRUE or else we would not be here + } + + + if( point->IsIgnored() ) + return true; + + return false; + } + } + + + /** + * Set the point at the given index in the control network to ignored, and add + * a new keyword to the list of ignored points with a cause for the ignoring, + * if the user wished to keep a log. + * + * @param cnet The Control Network being modified + * @param point The Control Point we wish to ignore + * @param cause A prose description of why the point was ignored (for logging) + */ + void ignorePoint(ControlNet &cnet, ControlPoint *point, QString cause) { + ControlPoint::Status result = point->SetIgnored(true); + + logResult(result == ControlPoint::Success ? ignoredPoints : editLockedPoints, + point->GetId(), cause); + } + + + /** + * Set the measure to be ignored, and add a new keyword to the list of ignored + * measures if the user wished to keep a log. + * + * @param cnet The Control Network being modified + * @param point The Control Point of the Control Measure we wish to ignore + * @param measure The Control Measure we wish to ignore + * @param cause A prose description of why the measure was ignored (for + * logging) + */ + void ignoreMeasure(ControlNet &cnet, ControlPoint *point, + ControlMeasure *measure, QString cause) { + ControlMeasure::Status result = measure->SetIgnored(true); + + logResult( + result == ControlMeasure::Success ? ignoredMeasures : editLockedMeasures, + point->GetId(), measure->GetCubeSerialNumber(), cause); + + if (ignoreAll && measure->Parent()->GetRefMeasure() == measure) { + foreach (ControlMeasure *cm, measure->Parent()->getMeasures()) { + if (!cm->IsIgnored()) + ignoreMeasure(cnet, measure->Parent(), cm, "Reference ignored"); + } + } + } + + + /** + * Delete the point, record how many points and measures have been deleted. + * + * @param cnet The Control Network being modified + * @param cp Index into the Control Network for the point we wish to delete + */ + void deletePoint(ControlNet &cnet, int cp) { + ControlPoint *point = cnet.GetPoint(cp); + + // Do the edit lock check up front so we don't accidentally log that a point + // was deleted when in fact it was not + if (!point->IsEditLocked()) { + numMeasuresDeleted += point->GetNumMeasures(); + numPointsDeleted++; + + if (keepLog) { + // If the point's being deleted but it wasn't set to ignore, it can only + // be because the point has two few measures remaining + if (!point->IsIgnored()) + ignorePoint(cnet, point, "Too few measures"); + + // For any measures not ignored, mark their cause for deletion as being + // caused by the point's deletion + for (int cm = 0; cm < point->GetNumMeasures(); cm++) { + ControlMeasure *measure = point->GetMeasure(cm); + if (!measure->IsIgnored()) + ignoreMeasure(cnet, point, measure, "Point deleted"); + } + } + + cnet.DeletePoint(cp); + } + else { + for (int cm = 0; cm < point->GetNumMeasures(); cm++) { + if (point->GetMeasure(cm)->IsEditLocked()) { + ignorePoint(cnet, point, "EditLocked point skipped"); + } + } + } + } + + + /** + * Delete the measure, increment the count of measures deleted. + * + * @param point The Control Point of the Control Measure we wish to delete + * @param cm Index into the Control Network for the measure we wish to delete + */ + void deleteMeasure(ControlPoint *point, int cm) { + if (point->Delete(cm) == ControlMeasure::Success) numMeasuresDeleted++; + } + + + /** + * Seed the log with points and measures already ignored. + * + * @param cnet The Control Network being modified + */ + void populateLog(ControlNet &cnet, bool ignore) { + ignoredPoints = new QMap; + ignoredMeasures = new QMap; + + retainedReferences = new QMap; + + editLockedPoints = new QMap; + editLockedMeasures = new QMap; + + Progress progress; + progress.SetText("Initializing Log File"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = 0; cp < cnet.GetNumPoints(); cp++) { + ControlPoint *point = cnet.GetPoint(cp); + + if (point->IsIgnored()) { + ignorePoint(cnet, point, "Ignored from input"); + } + + for (int cm = 0; cm < point->GetNumMeasures(); cm++) { + ControlMeasure *measure = point->GetMeasure(cm); + + if (measure->IsIgnored()) { + if (cm == point->IndexOfRefMeasure() && ignoreAll) { + if (ignore && !point->IsIgnored()) { + ignorePoint(cnet, point, "Reference measure ignored"); + } + } + + ignoreMeasure(cnet, point, measure, "Ignored from input"); + } + } + + progress.CheckStatus(); + } + } + + + void unlockPoints(ControlNet &cnet, ControlPointList &cpList) { + Progress progress; + progress.SetText("Unlocking Points"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + if (point->IsEditLocked() && cpList.HasControlPoint(point->GetId())) { + point->SetEditLock(false); + } + progress.CheckStatus(); + } + } + + + /** + * Iterates over the points in the Control Network looking for a match in the + * list of Control Points to be ignored. If a match is found, ignore the + * point, and if the DELETE option was selected, the point will then be deleted + * from the network. + * + * @param cnet The Control Network being modified + * @param cpList List of Control Points + */ + void ignorePoints(ControlNet &cnet, ControlPointList &cpList) { + Progress progress; + progress.SetText("Comparing Points to POINTLIST"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + // Compare each Point Id listed with the Point in the + // Control Network for according exclusion + if (!point->IsIgnored() && cpList.HasControlPoint(point->GetId())) { + ignorePoint(cnet, point, "Point ID in POINTLIST"); + } + + if (deleteIgnored) { + //look for previously ignored control points + if (point->IsIgnored()) { + deletePoint(cnet, cp); + } + else { + //look for previously ignored control measures + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + if (point->GetMeasure(cm)->IsIgnored() && deleteIgnored) { + deleteMeasure(point, cm); + } + } + // Check if there are too few measures in the point or the point was + // previously ignored + if (shouldDelete(point)) { + deletePoint(cnet, cp); + } + } + } + + progress.CheckStatus(); + } + } + + + /** + * Lock points. + * + * @param ControlNet Input ControlNet + * @param ControlPointList List of points to lock + */ + void lockPoints(ControlNet &cnet, ControlPointList &cpList) { + Progress progress; + progress.SetText("Locking Points"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + if (!point->IsEditLocked() && cpList.HasControlPoint(point->GetId())) { + point->SetEditLock(true); + } + progress.CheckStatus(); + } + } + + + /** + * Unlock cubes. + * + * @param ControlNet Input ControlNet + * @param SerialNumberList List of cubes to unlock + */ + void unlockCubes(ControlNet &cnet, SerialNumberList &snl) { + Progress progress; + progress.SetText("Unlocking Cubes"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + QString serialNumber = measure->GetCubeSerialNumber(); + if (measure->IsEditLocked() && snl.hasSerialNumber(serialNumber)) { + measure->SetEditLock(false); + } + } + progress.CheckStatus(); + } + } + + + /** + * Iterates over the list of Control Measures in the Control Network and + * compares measure serial numbers with those in the input list of serial + * numbers to be ignored. If a match is found, ignore the measure. If the + * DELETE option was selected, the measure will then be deleted from the + * network. + * + * @param cnet The Control Network being modified + * @param snl List of Serial Numbers to be ignored + */ + void ignoreCubes(ControlNet &cnet, SerialNumberList &snl) { + Progress progress; + progress.SetText("Comparing Measures to CUBELIST"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + // Compare each Serial Number listed with the serial number in the + // Control Measure for according exclusion + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + if (!point->IsIgnored() && point->GetMeasure(cm)->IsEditLocked()) { + ignoreMeasure(cnet, point, measure, "EditLocked measure skipped"); + } + + QString serialNumber = measure->GetCubeSerialNumber(); + + if (snl.hasSerialNumber(serialNumber)) { + QString cause = "Serial Number in CUBELIST"; + if (cm == point->IndexOfRefMeasure() && retainRef) { + logResult(retainedReferences, point->GetId(), cause); + } + else if (!measure->IsIgnored() || cm == point->IndexOfRefMeasure()) { + ignoreMeasure(cnet, point, measure, cause); + + if (cm == point->IndexOfRefMeasure() && !point->IsIgnored() && ignoreAll) { + ignorePoint(cnet, point, "Reference measure ignored"); + } + } + } + + // also look for previously ignored control measures + if (deleteIgnored && measure->IsIgnored()) { + deleteMeasure(point, cm); + } + } + // Check if there are too few measures in the point or the point was + // previously ignored + if (shouldDelete(point)) { + deletePoint(cnet, cp); + } + + progress.CheckStatus(); + } + } + + + /** + * Lock cubes. + * + * @param ControlNet Input ControlNet + * @param SerialNumberList List of cubes to Lock + */ + void lockCubes(ControlNet &cnet, SerialNumberList &snl) { + Progress progress; + progress.SetText("Locking Cubes"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + QString serialNumber = measure->GetCubeSerialNumber(); + if (!measure->IsEditLocked() && snl.hasSerialNumber(serialNumber)) { + measure->SetEditLock(true); + } + } + progress.CheckStatus(); + } + } + + + /** + * Unlock measures. + * + * @param ControlNet Input ControlNet + * @param QMap< QString, QSet * > Measures to unlock + */ + void unlockMeasures(ControlNet &cnet, + QMap< QString, QSet * > &editMeasures) { + + Progress progress; + progress.SetText("Unlocking Measures"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + QString id = point->GetId(); + if (editMeasures.contains(id)) { + QSet *measureSet = editMeasures[id]; + + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + QString serialNumber = measure->GetCubeSerialNumber(); + if (measure->IsEditLocked() && measureSet->contains(serialNumber)) { + measure->SetEditLock(false); + } + } + } + progress.CheckStatus(); + } + } + + + /** + * Ignore measures. + * + * @param ControlNet Input ControlNet + * @param QMap< QString, QSet * > Measures to ignore + */ + void ignoreMeasures(ControlNet &cnet, + QMap< QString, QSet * > &editMeasures) { + + Progress progress; + progress.SetText("Ignoring Measures"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + QString id = point->GetId(); + if (editMeasures.contains(id)) { + QSet *measureSet = editMeasures[id]; + + // Compare each Serial Number listed with the serial number in the + // Control Measure for according exclusion + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + if (!point->IsIgnored() && point->GetMeasure(cm)->IsEditLocked()) { + ignoreMeasure(cnet, point, measure, "EditLocked measure skipped"); + } + + QString serialNumber = measure->GetCubeSerialNumber(); + if (measureSet->contains(serialNumber)) { + QString cause = "Measure in MEASURELIST"; + if (cm == point->IndexOfRefMeasure() && retainRef) { + logResult(retainedReferences, point->GetId(), cause); + } + else if (!measure->IsIgnored() || cm == point->IndexOfRefMeasure()) { + ignoreMeasure(cnet, point, measure, cause); + + if (cm == point->IndexOfRefMeasure() && !point->IsIgnored() && ignoreAll) { + ignorePoint(cnet, point, "Reference measure ignored"); + } + } + } + + // also look for previously ignored control measures + if (deleteIgnored && measure->IsIgnored()) { + deleteMeasure(point, cm); + } + } + // Check if there are too few measures in the point or the point was + // previously ignored + if (shouldDelete(point)) { + deletePoint(cnet, cp); + } + } + + progress.CheckStatus(); + } + } + + + /** + * Lock measures. + * + * @param ControlNet Input ControlNet + * @param QMap< QString, QSet * > Measures to lock + */ + void lockMeasures(ControlNet &cnet, + QMap< QString, QSet * > &editMeasures) { + + Progress progress; + progress.SetText("Locking Measures"); + progress.SetMaximumSteps(cnet.GetNumPoints()); + progress.CheckStatus(); + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + QString id = point->GetId(); + if (editMeasures.contains(id)) { + QSet *measureSet = editMeasures[id]; + + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + QString serialNumber = measure->GetCubeSerialNumber(); + if (!measure->IsEditLocked() && measureSet->contains(serialNumber)) { + measure->SetEditLock(true); + } + } + } + progress.CheckStatus(); + } + } + + + /** + * Compare each measure in the Control Network against tolerances specified in + * the input DEFFILE. Ignore any measure whose values fall outside the valid + * tolerances, and delete it if the user specified to do so. + * + * @param cnet The Control Network being modified + * @param serialNumbers List of all Serial Numbers in the network + */ + void checkAllMeasureValidity(ControlNet &cnet, SerialNumberList *serialNumbers) { + + QList cnetSerials = cnet.GetCubeSerials(); + Progress progress; + progress.SetText("Checking Measure Validity"); + progress.SetMaximumSteps(cnetSerials.size()); + progress.CheckStatus(); + + foreach (QString serialNumber, cnetSerials) { + + Cube *cube = NULL; + Camera *camera = NULL; + if (cneteditValidator->IsCubeRequired()) { + if (!serialNumbers->hasSerialNumber(serialNumber)) { + QString msg = "Serial Number [" + serialNumber + "] contains no "; + msg += "matching cube in FROMLIST"; + throw IException(IException::User, msg, _FILEINFO_); + } + + cube = new Cube; + cube->open(serialNumbers->fileName(serialNumber)); + + if (cneteditValidator->IsCameraRequired()) { + try { + camera = cube->camera(); + } + catch (IException &e) { + QString msg = "Cannot Create Camera for Image:" + cube->fileName(); + throw IException(e, IException::User, msg, _FILEINFO_); + } + } + } + + QList measures = cnet.GetMeasuresInCube(serialNumber); + for (int cm = 0; cm < measures.size(); cm++) { + ControlMeasure *measure = measures[cm]; + ControlPoint *point = measure->Parent(); + + if (!measure->IsIgnored()) { + MeasureValidationResults results = + validateMeasure(measure, cube, camera); + + if (!results.isValid()) { + QString failure = results.toString(); + QString cause = "Validity Check " + failure; + + if (measure == point->GetRefMeasure() && retainRef) { + logResult(retainedReferences, point->GetId(), cause); + } + else { + ignoreMeasure(cnet, point, measure, cause); + + if (measure == point->GetRefMeasure() && ignoreAll) { + ignorePoint(cnet, point, "Reference measure ignored"); + } + } + } + } + } + + delete cube; + progress.CheckStatus(); + } + + for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { + ControlPoint *point = cnet.GetPoint(cp); + + for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { + ControlMeasure *measure = point->GetMeasure(cm); + + // Also look for previously ignored control measures + if (deleteIgnored && measure->IsIgnored()) { + deleteMeasure(point, cm); + } + } + + // Check if there are too few measures in the point or the point was + // previously ignored + if (shouldDelete(point)) + deletePoint(cnet, cp); + } + } + + + /** + * Test an individual measure against the user-specified tolerances and return + * the result. + * + * @param measure Measure to be tested + * @param cube Cube with serial number matching that of the current measure + * @param camera Camera associated with cube + * + * @return The results of validating the measure as an object containing the + * validity and a formatted error (or success) message + */ + MeasureValidationResults validateMeasure(const ControlMeasure *measure, + Cube *cube, Camera *camera) { + + MeasureValidationResults results = + cneteditValidator->ValidStandardOptions(measure, cube, camera); + + return results; + } + + + void logResult(QMap *pointsLog, QString pointId, QString cause) { + if (keepLog) { + // Label the keyword as the Point ID, and make the cause into the value + (*pointsLog)[pointId] = cause; + } + } + + + void logResult(QMap *measuresLog, + QString pointId, QString serial, QString cause) { + + if (keepLog) { + // Make the keyword label the measure Serial Number, and the cause into the + // value + PvlKeyword measureMessage(PvlKeyword(serial, cause)); + + // Using a map to make accessing by Point ID a O(1) to O(lg n) operation + if (measuresLog->contains(pointId)) { + // If the map already has a group for the given Point ID, simply add the + // new measure to it + PvlGroup &pointGroup = (*measuresLog)[pointId]; + pointGroup.addKeyword(measureMessage); + } + else { + // Else there is no group for the Point ID of the measure being ignored, + // so make a new group, add the measure, and insert it into the map + PvlGroup pointGroup(pointId); + pointGroup.addKeyword(measureMessage); + (*measuresLog)[pointId] = pointGroup; + } + } + } + + + /** + * Create points log. + * + * @param QString Label for points log + * @param QMap Points map + * + * @return PvlObject Points log + */ + PvlObject createLog(QString label, QMap *pointsMap) { + PvlObject pointsLog(label); + + QList pointIds = pointsMap->keys(); + for (int i = 0; i < pointIds.size(); i++) { + QString pointId = pointIds.at(i); + pointsLog.addKeyword(PvlKeyword(pointId, (*pointsMap)[pointId])); + } + + return pointsLog; + } + + + /** + * Create measures log. + * + * @param QString Label for measures log + * @param QMap Points map + * @param QMap Measures map + * + * @return PvlObject Measures log + */ + PvlObject createLog(QString label, + QMap *pointsMap, QMap *measuresMap) { + + PvlObject editLog(label); + + PvlObject pointsLog = createLog("Points", pointsMap); + editLog.addObject(pointsLog); + + // Get all the groups of measures from the map + PvlObject measuresLog("Measures"); + QList measureGroups = measuresMap->values(); + + for (int i = 0; i < measureGroups.size(); i++) + measuresLog.addGroup(measureGroups.at(i)); + + editLog.addObject(measuresLog); + return editLog; + } +} + + diff --git a/isis/src/control/apps/cnetedit/cnetedit.h b/isis/src/control/apps/cnetedit/cnetedit.h new file mode 100644 index 0000000000..d8d054b974 --- /dev/null +++ b/isis/src/control/apps/cnetedit/cnetedit.h @@ -0,0 +1,27 @@ +/** This is free and unencumbered software released into the public domain. + +The authors of ISIS do not claim copyright on the contents of this file. +For more details about the LICENSE terms and the AUTHORS, you will +find files of those names at the top level of this repository. **/ + +/* SPDX-License-Identifier: CC0-1.0 */ +#ifndef cnetedit_h +#define cnetedit_h + +#include "UserInterface.h" + +namespace Isis{ + class ControlNet; + class ControlPointList; + class SerialNumberList; + + extern Pvl cnetedit(UserInterface &ui); + extern Pvl cnetedit(ControlNet &cnet, UserInterface &ui, + ControlPointList *cpList=nullptr, + SerialNumberList *cubeSnl=nullptr, + QMap< QString, QSet * > *editMeasuresList=nullptr, + Pvl *defFile=nullptr, + SerialNumberList *validationSnl=nullptr); +} + +#endif diff --git a/isis/src/control/apps/cnetedit/main.cpp b/isis/src/control/apps/cnetedit/main.cpp index efb4e3aec2..0eab06ab54 100644 --- a/isis/src/control/apps/cnetedit/main.cpp +++ b/isis/src/control/apps/cnetedit/main.cpp @@ -5,1059 +5,40 @@ For more details about the LICENSE terms and the AUTHORS, you will find files of those names at the top level of this repository. **/ /* SPDX-License-Identifier: CC0-1.0 */ - #define GUIHELPERS #include "Isis.h" -#include -#include -#include -#include -#include - -#include "ControlMeasure.h" -#include "ControlNet.h" -#include "ControlNetValidMeasure.h" -#include "ControlPoint.h" -#include "ControlPointList.h" -#include "Cube.h" -#include "FileName.h" -#include "MeasureValidationResults.h" -#include "Progress.h" +#include "Application.h" #include "Pvl.h" -#include "PvlGroup.h" -#include "PvlKeyword.h" -#include "PvlObject.h" -#include "SerialNumber.h" -#include "SerialNumberList.h" -#include "IException.h" +#include "UserInterface.h" +#include "cnetedit.h" #include "GuiEditFile.h" + using namespace std; using namespace Isis; -// Deletion test -bool shouldDelete(ControlPoint *point); - -// Mutator methods -void ignorePoint(ControlNet &cnet, ControlPoint *point, QString cause); -void ignoreMeasure(ControlNet &cnet, ControlPoint *point, - ControlMeasure *measure, QString cause); -void deletePoint(ControlNet &cnet, int cp); -void deleteMeasure(ControlPoint *point, int cm); - -// Edit passes -void populateLog(ControlNet &cnet, bool ignore); - -void unlockPoints(ControlNet &cnet, ControlPointList &cpList); -void ignorePoints(ControlNet &cnet, ControlPointList &cpList); -void lockPoints(ControlNet &cnet, ControlPointList &cpList); - -void unlockCubes(ControlNet &cnet, SerialNumberList &snl); -void ignoreCubes(ControlNet &cnet, SerialNumberList &snl); -void lockCubes(ControlNet &cnet, SerialNumberList &snl); - -void unlockMeasures(ControlNet &cnet, - QMap< QString, QSet * > &editMeasures); -void ignoreMeasures(ControlNet &cnet, - QMap< QString, QSet * > &editMeasures); -void lockMeasures(ControlNet &cnet, - QMap< QString, QSet * > &editMeasures); - -void checkAllMeasureValidity(ControlNet &cnet, QString cubeList); - -// Validity test -MeasureValidationResults validateMeasure(const ControlMeasure *measure, - Cube *cube, Camera *camera); - -// Logging helpers -void logResult(QMap *pointsLog, QString pointId, QString cause); -void logResult(QMap *measuresLog, - QString pointId, QString serial, QString cause); -PvlObject createLog(QString label, QMap *pointsMap); -PvlObject createLog(QString label, - QMap *pointsMap, QMap *measuresMap); - void PrintTemp(); void EditDefFile(); map GuiHelpers() { - map helper; - helper["PrintTemp"] = (void *) PrintTemp; - helper["EditDefFile"] = (void *) EditDefFile; - return helper; + map helper; + helper["PrintTemp"] = (void *) PrintTemp; + helper["EditDefFile"] = (void *) EditDefFile; + return helper; } -// Global variables -int numPointsDeleted; -int numMeasuresDeleted; - -bool deleteIgnored; -bool preservePoints; -bool retainRef; -bool keepLog; -bool ignoreAll; - -QMap *ignoredPoints; -QMap *ignoredMeasures; -QMap *retainedReferences; -QMap *editLockedPoints; -QMap *editLockedMeasures; - -ControlNetValidMeasure *validator; - -// Main program void IsisMain() { - // 2016-12-08 Ian Humphrey - Set the QHash seed, otherwise output is ALWAYS slightly - // different. Note that in Qt4, the seed was constant, but in Qt5, the seed is - // created differently for each process. Fixes #4206. - qSetGlobalQHashSeed(0); - - // Reset the counts of points and measures deleted - numPointsDeleted = 0; - numMeasuresDeleted = 0; - - // Interface for getting user parameters UserInterface &ui = Application::GetUserInterface(); - - // Get global user parameters - bool ignore = ui.GetBoolean("IGNORE"); - deleteIgnored = ui.GetBoolean("DELETE"); - preservePoints = ui.GetBoolean("PRESERVE"); - retainRef = ui.GetBoolean("RETAIN_REFERENCE"); - ignoreAll = ui.GetBoolean("IGNOREALL"); - - // Data needed to keep track of ignored/deleted points and measures - keepLog = ui.WasEntered("LOG"); - ignoredPoints = NULL; - ignoredMeasures = NULL; - retainedReferences = NULL; - editLockedPoints = NULL; - editLockedMeasures = NULL; - - // Test if file exists, throw exception if it does not, continue otherwise. - FileName cnetInput(ui.GetFileName("CNET")); - if (!cnetInput.fileExists()) { - QString msg = "The control network [" + cnetInput.expanded() + "] entered for CNET does not exist."; - throw IException(IException::User, msg, _FILEINFO_); - } - - // If the user wants to keep a log, go ahead and populate it with all the - // existing ignored points and measures - ControlNet cnet(ui.GetFileName("CNET")); - if (keepLog && cnet.GetNumPoints() > 0) - populateLog(cnet, ignore); - - // List has Points Ids - bool processPoints = false; - ControlPointList *cpList = NULL; - if (ui.WasEntered("POINTLIST") && cnet.GetNumPoints() > 0) { - processPoints = true; - QString pointlistFileName = ui.GetFileName("POINTLIST"); - cpList = new ControlPointList((FileName) pointlistFileName); - } - - // List has Cube file names - bool processCubes = false; - SerialNumberList *cubeSnl = NULL; - if (ui.WasEntered("CUBELIST") && cnet.GetNumPoints() > 0) { - processCubes = true; - QString ignorelistFileName = ui.GetFileName("CUBELIST"); - cubeSnl = new SerialNumberList(ignorelistFileName); - } - - // List has measurelist file names - bool processMeasures = false; - QMap< QString, QSet * > *editMeasures = NULL; - if (ui.WasEntered("MEASURELIST") && cnet.GetNumPoints() > 0) { - processMeasures = true; - editMeasures = new QMap< QString, QSet * >; - - QFile file(ui.GetFileName("MEASURELIST")); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QString msg = "Unable to open MEASURELIST [" + - file.fileName() + "]"; - throw IException(IException::User, msg, _FILEINFO_); - } - - QTextStream in(&file); - int lineNumber = 1; - while (!in.atEnd()) { - QString line = in.readLine(); - QStringList results = line.split(","); - if (results.size() < 2) { - QString msg = "Line " + QString::number(lineNumber) + " in the MEASURELIST does " - "not contain a Point ID and a cube filename separated by a comma"; - throw IException(IException::User, msg, _FILEINFO_); - } - - if (!editMeasures->contains(results[0])) - editMeasures->insert(results[0], new QSet); - - FileName cubeName(results[1]); - QString sn = SerialNumber::Compose(cubeName.expanded()); - (*editMeasures)[results[0]]->insert(sn); - - lineNumber++; - } - } - - if (ui.GetBoolean("UNLOCK")) { - if (processPoints) unlockPoints(cnet, *cpList); - if (processCubes) unlockCubes(cnet, *cubeSnl); - if (processMeasures) unlockMeasures(cnet, *editMeasures); - } - - /* - * As a first pass, just try and delete anything that's already ignored - * in the Control Network, if the user wants to delete ignored points and - * measures. Originally, this check was performed last, only if the user - * didn't specify any other deletion methods. However, performing this - * check first will actually improve the running time in cases where there - * are already ignored points and measures in the input network. The added - * cost of doing this check here actually doesn't add to the running time at - * all, because these same checks would need to have been done later - * regardless. - */ - if (deleteIgnored && cnet.GetNumPoints() > 0) { - Progress progress; - progress.SetText("Deleting Ignored in Input"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - if (point->IsIgnored()) { - deletePoint(cnet, cp); - } - else { - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - if (point->GetMeasure(cm)->IsIgnored()) { - if (cm == point->IndexOfRefMeasure() && ignoreAll) { - // If the reference is ignored and IgnoreAll is set, the point must ignored too - ignorePoint(cnet, point, "Reference measure ignored"); - } - else { - deleteMeasure(point, cm); - } - } - } - - // Check if the number of measures in the point is zero or there are too - // few measures in the point and we don't want to preserve them. - if (shouldDelete(point)) { - deletePoint(cnet, cp); - } - } - - progress.CheckStatus(); - } - } - - if (ignore) { - if (processPoints) ignorePoints(cnet, *cpList); - if (processCubes) ignoreCubes(cnet, *cubeSnl); - if (processMeasures) ignoreMeasures(cnet, *editMeasures); - - // Perform validity check - if (ui.GetBoolean("CHECKVALID") && cnet.GetNumPoints() > 0) { - validator = NULL; - - // First validate DefFile's keywords and value type - Pvl defFile(ui.GetFileName("DEFFILE")); - Pvl pvlTemplate("$ISISROOT/appdata/templates/cnet_validmeasure/validmeasure.def"); - Pvl pvlResults; - pvlTemplate.validatePvl(defFile, pvlResults); - if (pvlResults.groups() > 0 || pvlResults.keywords() > 0) { - Application::Log(pvlResults.group(0)); - QString sErrMsg = "Invalid Deffile\n"; - throw IException(IException::User, sErrMsg, _FILEINFO_); - } - - // Construct the validator from the user-specified definition file - validator = new ControlNetValidMeasure(&defFile); - - // User also provided a list of all serial numbers corresponding to every - // cube in the control network - QString cubeList = ui.GetFileName("FROMLIST"); - checkAllMeasureValidity(cnet, cubeList); - - // Delete the validator - if (validator != NULL) { - delete validator; - validator = NULL; - } - - // Log the DEFFILE to the print file - Application::Log(defFile.findGroup("ValidMeasure", Pvl::Traverse)); - } - } - - if (ui.GetBoolean("LOCK")) { - if (processPoints) lockPoints(cnet, *cpList); - if (processCubes) lockCubes(cnet, *cubeSnl); - if (processMeasures) lockMeasures(cnet, *editMeasures); - } - - // Log statistics - if (keepLog) { - Pvl outputLog; - - outputLog.addKeyword(PvlKeyword("PointsDeleted", toString(numPointsDeleted))); - outputLog.addKeyword(PvlKeyword("MeasuresDeleted", toString(numMeasuresDeleted))); - - PvlObject lockedLog = createLog( - "EditLocked", editLockedPoints, editLockedMeasures); - outputLog.addObject(lockedLog); - - outputLog.addObject(createLog("RetainedReferences", retainedReferences)); - - // Depending on whether the user chose to delete ignored points and - // measures, the log will either contain reasons for being ignored, or - // reasons for being deleted - PvlObject ignoredLog = createLog( - deleteIgnored ? "Deleted" : "Ignored", ignoredPoints, ignoredMeasures); - outputLog.addObject(ignoredLog); - - // Write the log - QString logFileName = ui.GetFileName("LOG"); - outputLog.write(logFileName); - - // Delete the structures keeping track of the ignored points and measures - delete ignoredPoints; - ignoredPoints = NULL; - - delete ignoredMeasures; - ignoredMeasures = NULL; - - delete retainedReferences; - retainedReferences = NULL; - - delete editLockedPoints; - editLockedPoints = NULL; - - delete editLockedMeasures; - editLockedMeasures = NULL; - } - - delete cpList; - cpList = NULL; - - delete cubeSnl; - cubeSnl = NULL; - - if (editMeasures != NULL) { - QList points = editMeasures->keys(); - for (int i = 0; i < points.size(); i++) delete (*editMeasures)[points[i]]; - delete editMeasures; - editMeasures = NULL; - } - - // Write the network - cnet.Write(ui.GetFileName("ONET")); -} - - -/** - * After any modification to a point's measures or ignored status, this check - * should be performed to determine if the changes should result in the point's - * deletion. - * - * @param point The Control Point recently modified - * - * @return Whether or not the point should be deleted - */ - -bool shouldDelete(ControlPoint *point){ - - if(!deleteIgnored) - return false; - - - else{ - - if ( point->GetNumMeasures() == 0 && !preservePoints) - return true; - - - if (point->GetType() != ControlPoint::Fixed && point->GetNumMeasures()< 2 ){ - - if(preservePoints && point->GetNumMeasures() == 1) - return false; - - return true; //deleteIgnore = TRUE or else we would not be here - } - - - if( point->IsIgnored() ) - return true; - - return false; - - } - - -} - - - - - -/* -bool shouldDelete(ControlPoint *point) { - // If the point only has one measure, then unless it's a fixed point or the - // user wishes to preserve such points, it should be deleted. As a side - // effect, this check will also delete empty points that satisfy this - // condition without having to do the next check - if ((point->GetNumMeasures() < 2 && !preservePoints) && - point->GetType() != ControlPoint::Fixed) - return true; - - // A point without any measures should always be deleted - if (point->GetNumMeasures() == 0) - return true; - - // If the user wants to delete ignored points, and this point is ignored, - // then it follows that it should be deleted - if (point->IsIgnored() && deleteIgnored) - return true; - - // Otherwise, the point looks good - return false; -} -*/ - -/** - * Set the point at the given index in the control network to ignored, and add - * a new keyword to the list of ignored points with a cause for the ignoring, - * if the user wished to keep a log. - * - * @param cnet The Control Network being modified - * @param point The Control Point we wish to ignore - * @param cause A prose description of why the point was ignored (for logging) - */ -void ignorePoint(ControlNet &cnet, ControlPoint *point, QString cause) { - ControlPoint::Status result = point->SetIgnored(true); - - logResult(result == ControlPoint::Success ? ignoredPoints : editLockedPoints, - point->GetId(), cause); -} - - -/** - * Set the measure to be ignored, and add a new keyword to the list of ignored - * measures if the user wished to keep a log. - * - * @param cnet The Control Network being modified - * @param point The Control Point of the Control Measure we wish to ignore - * @param measure The Control Measure we wish to ignore - * @param cause A prose description of why the measure was ignored (for - * logging) - */ -void ignoreMeasure(ControlNet &cnet, ControlPoint *point, - ControlMeasure *measure, QString cause) { - ControlMeasure::Status result = measure->SetIgnored(true); - - logResult( - result == ControlMeasure::Success ? ignoredMeasures : editLockedMeasures, - point->GetId(), measure->GetCubeSerialNumber(), cause); - - if (ignoreAll && measure->Parent()->GetRefMeasure() == measure) { - foreach (ControlMeasure *cm, measure->Parent()->getMeasures()) { - if (!cm->IsIgnored()) - ignoreMeasure(cnet, measure->Parent(), cm, "Reference ignored"); - } - } -} - - -/** - * Delete the point, record how many points and measures have been deleted. - * - * @param cnet The Control Network being modified - * @param cp Index into the Control Network for the point we wish to delete - */ -void deletePoint(ControlNet &cnet, int cp) { - ControlPoint *point = cnet.GetPoint(cp); - - // Do the edit lock check up front so we don't accidentally log that a point - // was deleted when in fact it was not - if (!point->IsEditLocked()) { - numMeasuresDeleted += point->GetNumMeasures(); - numPointsDeleted++; - - if (keepLog) { - // If the point's being deleted but it wasn't set to ignore, it can only - // be because the point has two few measures remaining - if (!point->IsIgnored()) - ignorePoint(cnet, point, "Too few measures"); - - // For any measures not ignored, mark their cause for deletion as being - // caused by the point's deletion - for (int cm = 0; cm < point->GetNumMeasures(); cm++) { - ControlMeasure *measure = point->GetMeasure(cm); - if (!measure->IsIgnored()) - ignoreMeasure(cnet, point, measure, "Point deleted"); - } - } - - cnet.DeletePoint(cp); - } - else { - for (int cm = 0; cm < point->GetNumMeasures(); cm++) { - if (point->GetMeasure(cm)->IsEditLocked()) { - ignorePoint(cnet, point, "EditLocked point skipped"); - } - } - } -} - - -/** - * Delete the measure, increment the count of measures deleted. - * - * @param cnet The Control Network being modified - * @param point The Control Point of the Control Measure we wish to delete - * @param cm Index into the Control Network for the measure we wish to delete - */ -void deleteMeasure(ControlPoint *point, int cm) { - if (point->Delete(cm) == ControlMeasure::Success) numMeasuresDeleted++; -} - - -/** - * Seed the log with points and measures already ignored. - * - * @param cnet The Control Network being modified - */ -void populateLog(ControlNet &cnet, bool ignore) { - ignoredPoints = new QMap; - ignoredMeasures = new QMap; - - retainedReferences = new QMap; - - editLockedPoints = new QMap; - editLockedMeasures = new QMap; - - Progress progress; - progress.SetText("Initializing Log File"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = 0; cp < cnet.GetNumPoints(); cp++) { - ControlPoint *point = cnet.GetPoint(cp); - - if (point->IsIgnored()) { - ignorePoint(cnet, point, "Ignored from input"); - } - - for (int cm = 0; cm < point->GetNumMeasures(); cm++) { - ControlMeasure *measure = point->GetMeasure(cm); - - if (measure->IsIgnored()) { - if (cm == point->IndexOfRefMeasure() && ignoreAll) { - if (ignore && !point->IsIgnored()) { - ignorePoint(cnet, point, "Reference measure ignored"); - } - } - - ignoreMeasure(cnet, point, measure, "Ignored from input"); - } - } - - progress.CheckStatus(); - } -} - - -void unlockPoints(ControlNet &cnet, ControlPointList &cpList) { - Progress progress; - progress.SetText("Unlocking Points"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - if (point->IsEditLocked() && cpList.HasControlPoint(point->GetId())) { - point->SetEditLock(false); - } - progress.CheckStatus(); - } -} - - -/** - * Iterates over the points in the Control Network looking for a match in the - * list of Control Points to be ignored. If a match is found, ignore the - * point, and if the DELETE option was selected, the point will then be deleted - * from the network. - * - * @param fileName Name of the file containing the list of Control Points - * @param cnet The Control Network being modified - */ -void ignorePoints(ControlNet &cnet, ControlPointList &cpList) { - Progress progress; - progress.SetText("Comparing Points to POINTLIST"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - // Compare each Point Id listed with the Point in the - // Control Network for according exclusion - if (!point->IsIgnored() && cpList.HasControlPoint(point->GetId())) { - ignorePoint(cnet, point, "Point ID in POINTLIST"); - } - - if (deleteIgnored) { - //look for previously ignored control points - if (point->IsIgnored()) { - deletePoint(cnet, cp); - } - else { - //look for previously ignored control measures - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - if (point->GetMeasure(cm)->IsIgnored() && deleteIgnored) { - deleteMeasure(point, cm); - } - } - // Check if there are too few measures in the point or the point was - // previously ignored - if (shouldDelete(point)) { - deletePoint(cnet, cp); - } - } - } - - progress.CheckStatus(); - } -} - - -void lockPoints(ControlNet &cnet, ControlPointList &cpList) { - Progress progress; - progress.SetText("Locking Points"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - if (!point->IsEditLocked() && cpList.HasControlPoint(point->GetId())) { - point->SetEditLock(true); - } - progress.CheckStatus(); - } -} - - -void unlockCubes(ControlNet &cnet, SerialNumberList &snl) { - Progress progress; - progress.SetText("Unlocking Cubes"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - QString serialNumber = measure->GetCubeSerialNumber(); - if (measure->IsEditLocked() && snl.hasSerialNumber(serialNumber)) { - measure->SetEditLock(false); - } - } - progress.CheckStatus(); - } -} - - -/** - * Iterates over the list of Control Measures in the Control Network and - * compares measure serial numbers with those in the input list of serial - * numbers to be ignored. If a match is found, ignore the measure. If the - * DELETE option was selected, the measure will then be deleted from the - * network. - * - * @param fileName Name of the file containing the list of Serial Numbers to be - * ignored - * @param cnet The Control Network being modified - */ -void ignoreCubes(ControlNet &cnet, SerialNumberList &snl) { - Progress progress; - progress.SetText("Comparing Measures to CUBELIST"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - // Compare each Serial Number listed with the serial number in the - // Control Measure for according exclusion - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - if (!point->IsIgnored() && point->GetMeasure(cm)->IsEditLocked()) { - ignoreMeasure(cnet, point, measure, "EditLocked measure skipped"); - } - - QString serialNumber = measure->GetCubeSerialNumber(); - - if (snl.hasSerialNumber(serialNumber)) { - QString cause = "Serial Number in CUBELIST"; - if (cm == point->IndexOfRefMeasure() && retainRef) { - logResult(retainedReferences, point->GetId(), cause); - } - else if (!measure->IsIgnored() || cm == point->IndexOfRefMeasure()) { - ignoreMeasure(cnet, point, measure, cause); - - if (cm == point->IndexOfRefMeasure() && !point->IsIgnored() && ignoreAll) { - ignorePoint(cnet, point, "Reference measure ignored"); - } - } - } - - //also look for previously ignored control measures - if (deleteIgnored && measure->IsIgnored()) { - deleteMeasure(point, cm); - } - } - // Check if there are too few measures in the point or the point was - // previously ignored - if (shouldDelete(point)) { - deletePoint(cnet, cp); - } - - progress.CheckStatus(); - } -} - - -void lockCubes(ControlNet &cnet, SerialNumberList &snl) { - Progress progress; - progress.SetText("Locking Cubes"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - QString serialNumber = measure->GetCubeSerialNumber(); - if (!measure->IsEditLocked() && snl.hasSerialNumber(serialNumber)) { - measure->SetEditLock(true); - } - } - progress.CheckStatus(); - } -} - - -void unlockMeasures(ControlNet &cnet, - QMap< QString, QSet * > &editMeasures) { - - Progress progress; - progress.SetText("Unlocking Measures"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - QString id = point->GetId(); - if (editMeasures.contains(id)) { - QSet *measureSet = editMeasures[id]; - - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - QString serialNumber = measure->GetCubeSerialNumber(); - if (measure->IsEditLocked() && measureSet->contains(serialNumber)) { - measure->SetEditLock(false); - } - } - } - progress.CheckStatus(); - } -} - - -void ignoreMeasures(ControlNet &cnet, - QMap< QString, QSet * > &editMeasures) { - - Progress progress; - progress.SetText("Ignoring Measures"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - QString id = point->GetId(); - if (editMeasures.contains(id)) { - QSet *measureSet = editMeasures[id]; - - // Compare each Serial Number listed with the serial number in the - // Control Measure for according exclusion - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - if (!point->IsIgnored() && point->GetMeasure(cm)->IsEditLocked()) { - ignoreMeasure(cnet, point, measure, "EditLocked measure skipped"); - } - - QString serialNumber = measure->GetCubeSerialNumber(); - if (measureSet->contains(serialNumber)) { - QString cause = "Measure in MEASURELIST"; - if (cm == point->IndexOfRefMeasure() && retainRef) { - logResult(retainedReferences, point->GetId(), cause); - } - else if (!measure->IsIgnored() || cm == point->IndexOfRefMeasure()) { - ignoreMeasure(cnet, point, measure, cause); - - if (cm == point->IndexOfRefMeasure() && !point->IsIgnored() && ignoreAll) { - ignorePoint(cnet, point, "Reference measure ignored"); - } - } - } - - //also look for previously ignored control measures - if (deleteIgnored && measure->IsIgnored()) { - deleteMeasure(point, cm); - } - } - // Check if there are too few measures in the point or the point was - // previously ignored - if (shouldDelete(point)) { - deletePoint(cnet, cp); - } - } - - progress.CheckStatus(); - } -} - - -void lockMeasures(ControlNet &cnet, - QMap< QString, QSet * > &editMeasures) { - - Progress progress; - progress.SetText("Locking Measures"); - progress.SetMaximumSteps(cnet.GetNumPoints()); - progress.CheckStatus(); - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - QString id = point->GetId(); - if (editMeasures.contains(id)) { - QSet *measureSet = editMeasures[id]; - - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - QString serialNumber = measure->GetCubeSerialNumber(); - if (!measure->IsEditLocked() && measureSet->contains(serialNumber)) { - measure->SetEditLock(true); - } - } - } - progress.CheckStatus(); - } -} - - -/** - * Compare each measure in the Control Network against tolerances specified in - * the input DEFFILE. Ignore any measure whose values fall outside the valid - * tolerances, and delete it if the user specified to do so. - * - * @param cnet The Control Network being modified - * @param cubeList Name of the file containing the list of all Serial Numbers - * in the network - */ -void checkAllMeasureValidity(ControlNet &cnet, QString cubeList) { - SerialNumberList serialNumbers(cubeList); - - QList cnetSerials = cnet.GetCubeSerials(); - Progress progress; - progress.SetText("Checking Measure Validity"); - progress.SetMaximumSteps(cnetSerials.size()); - progress.CheckStatus(); - - foreach (QString serialNumber, cnetSerials) { - - Cube *cube = NULL; - Camera *camera = NULL; - if (validator->IsCubeRequired()) { - if (!serialNumbers.hasSerialNumber(serialNumber)) { - QString msg = "Serial Number [" + serialNumber + "] contains no "; - msg += "matching cube in FROMLIST"; - throw IException(IException::User, msg, _FILEINFO_); - } - - cube = new Cube; - cube->open(serialNumbers.fileName(serialNumber)); - - if (validator->IsCameraRequired()) { - try { - camera = cube->camera(); - } - catch (IException &e) { - QString msg = "Cannot Create Camera for Image:" + cube->fileName(); - throw IException(e, IException::User, msg, _FILEINFO_); - } - } - } - - QList measures = cnet.GetMeasuresInCube(serialNumber); - for (int cm = 0; cm < measures.size(); cm++) { - ControlMeasure *measure = measures[cm]; - ControlPoint *point = measure->Parent(); - - if (!measure->IsIgnored()) { - MeasureValidationResults results = - validateMeasure(measure, cube, camera); - - if (!results.isValid()) { - QString failure = results.toString(); - QString cause = "Validity Check " + failure; - - if (measure == point->GetRefMeasure() && retainRef) { - logResult(retainedReferences, point->GetId(), cause); - } - else { - ignoreMeasure(cnet, point, measure, cause); - - if (measure == point->GetRefMeasure() && ignoreAll) { - ignorePoint(cnet, point, "Reference measure ignored"); - } - } - } - } - } - - delete cube; - progress.CheckStatus(); - } - - for (int cp = cnet.GetNumPoints() - 1; cp >= 0; cp--) { - ControlPoint *point = cnet.GetPoint(cp); - - for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) { - ControlMeasure *measure = point->GetMeasure(cm); - - // Also look for previously ignored control measures - if (deleteIgnored && measure->IsIgnored()) { - deleteMeasure(point, cm); - } - } - - // Check if there are too few measures in the point or the point was - // previously ignored - if (shouldDelete(point)) - deletePoint(cnet, cp); - } -} - - -/** - * Test an individual measure against the user-specified tolerances and return - * the result. - * - * @param curMeasure The measure currently being tested - * @param cubeName Name of the cube whose serial number matches that of the - * current measure - * - * @return The results of validating the measure as an object containing the - * validity and a formatted error (or success) message - */ -MeasureValidationResults validateMeasure(const ControlMeasure *measure, - Cube *cube, Camera *camera) { - - MeasureValidationResults results = - validator->ValidStandardOptions(measure, cube, camera); - - return results; -} - - -void logResult(QMap *pointsLog, QString pointId, QString cause) { - if (keepLog) { - // Label the keyword as the Point ID, and make the cause into the value - (*pointsLog)[pointId] = cause; - } -} - - -void logResult(QMap *measuresLog, - QString pointId, QString serial, QString cause) { - - if (keepLog) { - // Make the keyword label the measure Serial Number, and the cause into the - // value - PvlKeyword measureMessage(PvlKeyword(serial, cause)); - - // Using a map to make accessing by Point ID a O(1) to O(lg n) operation - if (measuresLog->contains(pointId)) { - // If the map already has a group for the given Point ID, simply add the - // new measure to it - PvlGroup &pointGroup = (*measuresLog)[pointId]; - pointGroup.addKeyword(measureMessage); - } - else { - // Else there is no group for the Point ID of the measure being ignored, - // so make a new group, add the measure, and insert it into the map - PvlGroup pointGroup(pointId); - pointGroup.addKeyword(measureMessage); - (*measuresLog)[pointId] = pointGroup; - } - } -} - - -PvlObject createLog(QString label, QMap *pointsMap) { - PvlObject pointsLog(label); - - QList pointIds = pointsMap->keys(); - for (int i = 0; i < pointIds.size(); i++) { - QString pointId = pointIds.at(i); - pointsLog.addKeyword(PvlKeyword(pointId, (*pointsMap)[pointId])); - } - - return pointsLog; + Pvl results = cnetedit(ui); } - -PvlObject createLog(QString label, - QMap *pointsMap, QMap *measuresMap) { - - PvlObject editLog(label); - - PvlObject pointsLog = createLog("Points", pointsMap); - editLog.addObject(pointsLog); - - // Get all the groups of measures from the map - PvlObject measuresLog("Measures"); - QList measureGroups = measuresMap->values(); - - for (int i = 0; i < measureGroups.size(); i++) - measuresLog.addGroup(measureGroups.at(i)); - - editLog.addObject(measuresLog); - return editLog; -} - - /** - * Helper function to print out template to session log. - */ + * Helper function to print out template to session log. + */ void PrintTemp() { UserInterface &ui = Application::GetUserInterface(); @@ -1069,12 +50,13 @@ void PrintTemp() { Isis::Application::GuiLog(userTemp); } + /** - * Helper function to be able to edit the Deffile. - * Opens an editor to edit the file. - * - * @author Sharmila Prasad (5/23/2011) - */ + * Helper function to be able to edit the Deffile. + * Opens an editor to edit the file. + * + * @author Sharmila Prasad (5/23/2011) + */ void EditDefFile(void) { UserInterface &ui = Application::GetUserInterface(); QString sDefFile = ui.GetAsString("DEFFILE"); diff --git a/isis/src/control/apps/cnetedit/tsts/Makefile b/isis/src/control/apps/cnetedit/tsts/Makefile deleted file mode 100644 index 322a6262d1..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree - diff --git a/isis/src/control/apps/cnetedit/tsts/checkValid/Makefile b/isis/src/control/apps/cnetedit/tsts/checkValid/Makefile deleted file mode 100644 index 72ee5aa8c8..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/checkValid/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: -# normal test - $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - $(APPNAME) CNET=$(INPUT)/cnet.net \ - ONET=$(OUTPUT)/cnet.net \ - LOG=$(OUTPUT)/log.txt \ - CHECKVALID=yes \ - FROMLIST=$(OUTPUT)/list.lis \ - DEFFILE=$(INPUT)/deffile.def \ - RETAIN_REFERENCE=yes > /dev/null; - -# test with IGNOREALL=true -# $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - $(APPNAME) CNET=$(INPUT)/cnet.net \ - ONET=$(OUTPUT)/cnet2.net \ - LOG=$(OUTPUT)/log2.txt \ - CHECKVALID=yes \ - IGNOREALL=true \ - FROMLIST=$(OUTPUT)/list.lis \ - DEFFILE=$(INPUT)/deffile.def > /dev/null; - -# Cleanup - $(RM) $(OUTPUT)/list.lis; diff --git a/isis/src/control/apps/cnetedit/tsts/default/Makefile b/isis/src/control/apps/cnetedit/tsts/default/Makefile deleted file mode 100644 index 39b4d39908..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/default/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) CNET=$(INPUT)/cnet.net ONET=$(OUTPUT)/cnet.net > /dev/null; diff --git a/isis/src/control/apps/cnetedit/tsts/editLock/Makefile b/isis/src/control/apps/cnetedit/tsts/editLock/Makefile deleted file mode 100644 index eb0e6f149c..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/editLock/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/locked.txt \ - CUBELIST=$(OUTPUT)/list.lis \ - POINTLIST=$(INPUT)/points.lis \ - IGNORE=no DELETE=no LOCK=yes \ - ONET=$(OUTPUT)/locked.net > /dev/null; - - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/unlocked.txt \ - CUBELIST=$(OUTPUT)/list.lis \ - POINTLIST=$(INPUT)/points.lis \ - UNLOCK=yes IGNORE=no DELETE=no \ - ONET=$(OUTPUT)/unlocked.net > /dev/null; - - $(RM) $(OUTPUT)/list.lis; diff --git a/isis/src/control/apps/cnetedit/tsts/errors/Makefile b/isis/src/control/apps/cnetedit/tsts/errors/Makefile deleted file mode 100644 index a2630fbc54..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/errors/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: -# Test with a non-existant file - echo -e "Error Test: Non-existant file" > $(OUTPUT)/error_temp.txt; - if [[ `$(APPNAME) CNET=$(INPUT)/cnet.net \ - ONET=$(OUTPUT)/cnet.net \ - 2>> $(OUTPUT)/error_temp.txt \ - > /dev/null` ]]; \ - then \ - true; \ - fi; - - $(SED) 's+\[/.*/input/+\[input/+' $(OUTPUT)/error_temp.txt > $(OUTPUT)/error.txt; - -# Cleanup - $(RM) $(OUTPUT)/error_temp.txt; diff --git a/isis/src/control/apps/cnetedit/tsts/ignore/Makefile b/isis/src/control/apps/cnetedit/tsts/ignore/Makefile deleted file mode 100644 index c7f763dc8f..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/ignore/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - $(CAT) $(INPUT)/measurelist.txt | sed 's#X#$(INPUT)#' \ - > $(OUTPUT)/measurelist.txt; - $(APPNAME) CNET=$(INPUT)/cnet.net \ - CUBELIST=$(OUTPUT)/list.lis \ - MEASURELIST=$(OUTPUT)/measurelist.txt \ - ONET=$(OUTPUT)/cnet.net DELETE=no \ - IGNOREALL=yes \ - log=$(OUTPUT)/log.txt > /dev/null; - $(RM) $(OUTPUT)/list.lis $(OUTPUT)/measurelist.txt; diff --git a/isis/src/control/apps/cnetedit/tsts/ignoreMeasuresPoints/Makefile b/isis/src/control/apps/cnetedit/tsts/ignoreMeasuresPoints/Makefile deleted file mode 100644 index d8fd565c07..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/ignoreMeasuresPoints/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/log.txt \ - CUBELIST=$(OUTPUT)/list.lis \ - POINTLIST=$(INPUT)/points.lis \ - ONET=$(OUTPUT)/cnet.net > /dev/null; - $(RM) $(OUTPUT)/list.lis; diff --git a/isis/src/control/apps/cnetedit/tsts/ignorePoints/Makefile b/isis/src/control/apps/cnetedit/tsts/ignorePoints/Makefile deleted file mode 100644 index 77cc4386f2..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/ignorePoints/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: -# original test - $(APPNAME) CNET=$(INPUT)/cnet.net \ - POINTLIST=$(INPUT)/points.lis \ - ONET=$(OUTPUT)/cnet.net > /dev/null; - -# test IGNOREALL=true with ignored input measures / points - $(APPNAME) CNET=$(INPUT)/cnet.net \ - POINTLIST=$(INPUT)/points.lis \ - IGNOREALL = true \ - ONET=$(OUTPUT)/cnet2.net > /dev/null; diff --git a/isis/src/control/apps/cnetedit/tsts/measurelist/Makefile b/isis/src/control/apps/cnetedit/tsts/measurelist/Makefile deleted file mode 100644 index 8dc1357221..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/measurelist/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - -# general test - $(CAT) $(INPUT)/bad_measures.lis | $(SED) "s#,#,$(INPUT)/#" \ - > $(OUTPUT)/list.lis; - - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/log.txt \ - MEASURELIST=$(OUTPUT)/list.lis \ - DELETE=no \ - ONET=$(OUTPUT)/cnet.net > /dev/null; - -# test with IGNOREALL = true, DELETE=no measure that is a reference for a non-ignored point - $(CAT) $(INPUT)/bad_measures2.lis | $(SED) "s#,#,$(INPUT)/#" \ - > $(OUTPUT)/list2.lis; - - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/log2.txt \ - MEASURELIST=$(OUTPUT)/list2.lis \ - IGNOREALL=true \ - DELETE=no \ - ONET=$(OUTPUT)/cnet2.net > /dev/null; - -# test with DELETE=yes - $(CAT) $(INPUT)/bad_measures.lis | $(SED) "s#,#,$(INPUT)/#" \ - > $(OUTPUT)/list.lis; - - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/log3.txt \ - MEASURELIST=$(OUTPUT)/list.lis \ - ONET=$(OUTPUT)/cnet3.net > /dev/null; - -# Cleanup - $(RM) $(OUTPUT)/list.lis; - $(RM) $(OUTPUT)/list2.lis; diff --git a/isis/src/control/apps/cnetedit/tsts/noDelete/Makefile b/isis/src/control/apps/cnetedit/tsts/noDelete/Makefile deleted file mode 100644 index 93096a1e09..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/noDelete/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/log.txt \ - CUBELIST=$(OUTPUT)/list.lis \ - POINTLIST=$(INPUT)/points.lis \ - DELETE = false \ - ONET=$(OUTPUT)/cnet2.net > /dev/null; - $(RM) $(OUTPUT)/list.lis; diff --git a/isis/src/control/apps/cnetedit/tsts/preservePoints/Makefile b/isis/src/control/apps/cnetedit/tsts/preservePoints/Makefile deleted file mode 100644 index 779e410259..0000000000 --- a/isis/src/control/apps/cnetedit/tsts/preservePoints/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -APPNAME = cnetedit - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.cub > $(OUTPUT)/list.lis; - $(APPNAME) CNET=$(INPUT)/cnet.net \ - LOG=$(OUTPUT)/log.txt \ - CUBELIST=$(OUTPUT)/list.lis \ - POINTLIST=$(INPUT)/points.lis \ - DELETE = true \ - PRESERVE = true \ - ONET=$(OUTPUT)/cnet2.net > /dev/null; - $(RM) $(OUTPUT)/list.lis; diff --git a/isis/tests/FunctionalTestsCnetedit.cpp b/isis/tests/FunctionalTestsCnetedit.cpp new file mode 100644 index 0000000000..a7cca587e7 --- /dev/null +++ b/isis/tests/FunctionalTestsCnetedit.cpp @@ -0,0 +1,2943 @@ +#include +#include +#include + +#include "cnetedit.h" +#include "ControlMeasure.h" +#include "ControlNet.h" +#include "ControlPoint.h" +#include "FileList.h" +#include "Progress.h" +#include "Pvl.h" +#include "PvlGroup.h" +#include "PvlObject.h" +#include "LineManager.h" +#include "spiceinit.h" +#include "TempFixtures.h" +#include "TestUtilities.h" + +#include "gtest/gtest.h" + +using namespace Isis; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/cnetedit.xml").expanded(); + +class CneteditCheckValid : public TempTestingFiles { + protected: + QString cnet11File; + QString chkValidCubeListFile; + QString defFile; + + void SetUp() override { + TempTestingFiles::SetUp(); + + chkValidCubeListFile = tempDir.path() + "/chkValidCubeList.lis"; + cnet11File = "data/cnetedit/cnet_11pts.pvl"; + defFile = tempDir.path() + "/defFile.def"; + + std::ifstream label1Strm("data/cnetedit/PSP_002733_1880_RED4.crop.pvl"); + std::ifstream label2Strm("data/cnetedit/PSP_002733_1880_RED5.crop.pvl"); + + Pvl label1; + Pvl label2; + + label1Strm >> label1; + label2Strm >> label2; + + Cube cube1; + Cube cube2; + + cube1.fromLabel(tempDir.path() + "/PSP_002733_1880_RED4.crop.cub", + label1, "rw"); + cube2.fromLabel(tempDir.path() + "/PSP_002733_1880_RED5.crop.cub", + label2, "rw"); + + LineManager line(cube1); + LineManager line2(cube2); + + for(line.begin(); !line.end(); line++) { + for(int i = 0; i < line.size(); i++) { + line[i] = (double)(i+1); + } + cube1.write(line); + } + for(line2.begin(); !line2.end(); line2++) { + for(int i = 0; i < line2.size(); i++) { + line2[i] = (double)(i+1); + } + cube2.write(line2); + } + cube1.reopen("rw"); + cube2.reopen("rw"); + + // set up cube list for checkValid tests + FileList chkValidCubeList; + chkValidCubeList.append(cube1.fileName()); + chkValidCubeList.append(cube2.fileName()); + chkValidCubeList.write(chkValidCubeListFile); + + // set up pvl def file + PvlGroup validMeasureGroup("ValidMeasure"); + validMeasureGroup.addKeyword(PvlKeyword("MinDN", "-1000000")); + validMeasureGroup.addKeyword(PvlKeyword("MaxDN", "1000000")); + validMeasureGroup.addKeyword(PvlKeyword("MinEmission", "0")); + validMeasureGroup.addKeyword(PvlKeyword("MaxEmission", "135")); + validMeasureGroup.addKeyword(PvlKeyword("MinIncidence", "0")); + validMeasureGroup.addKeyword(PvlKeyword("MaxIncidence", "135")); + validMeasureGroup.addKeyword(PvlKeyword("MinResolution", "0")); + validMeasureGroup.addKeyword(PvlKeyword("MaxResolution", "1000")); + validMeasureGroup.addKeyword(PvlKeyword("PixelsFromEdge", "5")); + validMeasureGroup.addKeyword(PvlKeyword("SampleResidual", "5")); + validMeasureGroup.addKeyword(PvlKeyword("LineResidual", "5")); + validMeasureGroup.addKeyword(PvlKeyword("SampleShift", "3")); + validMeasureGroup.addKeyword(PvlKeyword("LineShift", "5")); + Pvl p; + p.addGroup(validMeasureGroup); + p.write(defFile); + } +}; + +class CneteditMeasureList : public TempTestingFiles { + protected: + QString cnet35File; + QString badMeasureListFile1; + QString badMeasureListFile2; + + void SetUp() override { + TempTestingFiles::SetUp(); + + cnet35File = "data/cnetedit/cnet_35pts.pvl"; + badMeasureListFile1 = tempDir.path() + "badMeasureList1.lis"; + badMeasureListFile2 = tempDir.path() + "badMeasureList2.lis"; + + // setup badMeasureLists with pvl label files + FileList badMeasureList1; + badMeasureList1.append("I24827003RDR_bndry_32,data/cnetedit/I10101002RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_32,data/cnetedit/I10413004RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_35,data/cnetedit/I07873009RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_35,data/cnetedit/I23604003RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_35,data/cnetedit/I24827003RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_36,data/cnetedit/I07873009RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_36,data/cnetedit/I24827003RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_50,data/cnetedit/I24827003RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_53,data/cnetedit/I24827003RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_56,data/cnetedit/I24827003RDR.dstr.cub.label.pvl"); + badMeasureList1.append("I24827003RDR_bndry_8,data/cnetedit/I07873009RDR.dstr.cub.label.pvl"); + badMeasureList1.write(badMeasureListFile1); + + FileList badMeasureList2(badMeasureList1); + badMeasureList2.append("I24827003RDR_bndry_11,data/cnetedit/I24827003RDR.dstr.cub.label.pvl"); + badMeasureList2.write(badMeasureListFile2); + } +}; + + +class Cnetedit : public TempTestingFiles { + protected: + QString cnet108File; + QString pointListFile; + QString cubeListFile; + QString measureListFile; + + void SetUp() override { + TempTestingFiles::SetUp(); + + cnet108File = "data/cnetedit/cnet_108pts.pvl"; + pointListFile = tempDir.path() + "/pointList.lis"; + cubeListFile = tempDir.path() + "/cubeList.lis"; + measureListFile = tempDir.path() + "measureList.lis"; + + // set up cube list + FileList cubeList; + cubeList.append("data/cnetedit/e0902065.cal.sub.cub"); + cubeList.write(cubeListFile); + + // set up measureList + FileList measureList; + measureList.append("new0001,data/cnetedit/e0902065.cal.sub.cub"); + measureList.write(measureListFile); + + // set up point list + FileList pointList; + pointList.append("new0007"); + pointList.append("new0050"); + pointList.append("new0001"); + pointList.append("new0036"); + pointList.append("new0020"); + pointList.append("new0008"); + pointList.write(pointListFile); + } +}; + + +/** + * FunctionalTestCneteditCheckValid + * + * Cnetedit test of check valid functionality. + * Input ... + * 1) ControlNet with 11 points (data/cnetedit/cnet_11pts.pvl) + * 2) two image cube list file (data/cnetedit/PSP_002733_1880_RED4.crop.cub; + * data/cnetedit/PSP_002733_1880_RED5.crop.cub) + * 3) def file + * 4) CHECKVALID = yes + * 5) RETAIN_REFERENCE=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(CneteditCheckValid, FunctionalTestCneteditCheckValid) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet11File, + "log=" + tempDir.path() + "/log.txt", + "checkvalid=yes", + "fromlist=" + chkValidCubeListFile, + "retain_reference=yes", + "deffile=" + defFile, + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditLog; + + try { + cneteditLog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 4); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 8); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // check retained references + PvlObject retainedRefs = log.findObject("RetainedReferences"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, retainedRefs.findKeyword("pointregTest0001"), + "Validity Check failed: Sample Residual is greater than" + " tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, retainedRefs.findKeyword("pointregTest0007"), + "Validity Check failed: Sample Residual is greater than" + " tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, retainedRefs.findKeyword("pointregTest0008"), + "Validity Check failed: Pixels From Edge is less than" + " tolerance 5"); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0002"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0003"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0004"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0011"), + "Too few measures"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup pointregTest0002 = deletedMeasures.findGroup("pointregTest0002"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0002. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0002. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Point deleted"); + PvlGroup pointregTest0003 = deletedMeasures.findGroup("pointregTest0003"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0003. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Validity Check failed: Pixels From Edge is less than" + " tolerance 5 Line Residual is greater than tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0003. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + PvlGroup pointregTest0004 = deletedMeasures.findGroup("pointregTest0004"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0004. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0004. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Point deleted"); + PvlGroup pointregTest0011 = deletedMeasures.findGroup("pointregTest0011"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0011. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Validity Check failed: Pixels From Edge is less than" + " tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0011. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 7); + EXPECT_EQ(outNet.GetNumValidPoints(), 7); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 14); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * FunctionalTestCneteditCheckValidIgnoreAll + * + * Cnetedit test of check valid functionality with IGNOREALL=YES. + * Input ... + * 1) ControlNet with 11 points (data/cnetedit/cnet_11pts.pvl) + * 2) two image cube list file (data/cnetedit/PSP_002733_1880_RED4.crop.cub; + * data/cnetedit/PSP_002733_1880_RED5.crop.cub) + * 3) def file + * 4) CHECKVALID = yes + * 5) IGNOREALL=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(CneteditCheckValid, FunctionalTestCneteditCheckValidIgnoreAll) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet11File, + "log=" + tempDir.path() + "/log.txt", + "checkvalid=yes", + "ignoreall=yes", + "fromlist=" + chkValidCubeListFile, + "deffile=" + defFile, + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditLog; + + try { + cneteditLog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 7); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 14); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0001"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0002"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0003"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0004"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0007"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0008"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("pointregTest0011"), + "Too few measures"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup pointregTest0001 = deletedMeasures.findGroup("pointregTest0001"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0001. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Validity Check failed: Sample Residual is greater than " + "tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0001. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Reference ignored"); + PvlGroup pointregTest0002 = deletedMeasures.findGroup("pointregTest0002"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0002. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0002. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Reference ignored"); + PvlGroup pointregTest0003 = deletedMeasures.findGroup("pointregTest0003"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0003. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Validity Check failed: Pixels From Edge is less than" + " tolerance 5 Line Residual is greater than tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0003. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + PvlGroup pointregTest0004 = deletedMeasures.findGroup("pointregTest0004"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0004. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0004. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Reference ignored"); + PvlGroup pointregTest0007 = deletedMeasures.findGroup("pointregTest0007"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0007. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Validity Check failed: Sample Residual is greater than " + "tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0007. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Reference ignored"); + PvlGroup pointregTest0008 = deletedMeasures.findGroup("pointregTest0008"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0008. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Validity Check failed: Pixels From Edge is less than " + "tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0008. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Reference ignored"); + PvlGroup pointregTest0011 = deletedMeasures.findGroup("pointregTest0011"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0011. + findKeyword("MRO/HIRISE/856864216:41044/RED5/2"), + "Validity Check failed: Pixels From Edge is less than" + " tolerance 5"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, pointregTest0011. + findKeyword("MRO/HIRISE/856864216:41044/RED4/2"), + "Point deleted"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 4); + EXPECT_EQ(outNet.GetNumValidPoints(), 4); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 8); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditDefault + * + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, FunctionalTestCneteditDefault) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "log=" + tempDir.path() + "/log.txt", + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditLog; + + try { + cneteditLog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 8); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 21); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0038"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0039"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0067"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0068"), + "Ignored from input"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup new0031 = deletedMeasures.findGroup("new0031"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0031. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0031. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0032 = deletedMeasures.findGroup("new0032"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0032. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0032. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0038 = deletedMeasures.findGroup("new0038"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0038. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0038. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0039 = deletedMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0039. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0039. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0064 = deletedMeasures.findGroup("new0064"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0064. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0064. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0064. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0065 = deletedMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0065. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0065. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0065. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0066"). + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0067 = deletedMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0068 = deletedMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 100); + EXPECT_EQ(outNet.GetNumValidPoints(), 100); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 240); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditEditlock + * + * Cnetedit test of edit lock functionality. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) one image cube list file (data/cnetedit/e0902065.cal.sub.cub) + * 3) points list file + * 4) ignore=no + * 5) delete=no + * 6) lock=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, FunctionalTestCneteditEditlock) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "log=" + tempDir.path() + "/log.txt", + "cubelist=" + cubeListFile, + "pointlist=" + pointListFile, + "ignore=no", + "delete=no", + "lock=yes", + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditLog; + + try { + cneteditLog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 0); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 0); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").groups(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject ignoredPoints = log.findObject("Ignored").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0068"), + "Ignored from input"); + + // check ignored measures + PvlObject ignoredMeasures = log.findObject("Ignored").findObject("Measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0038"). + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0039 = ignoredMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0039. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0039. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0065"). + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0066"). + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0067 = ignoredMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0068 = ignoredMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 108); + EXPECT_EQ(outNet.GetNumValidPoints(), 103); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 6); //should be 6 + EXPECT_EQ(outNet.GetNumMeasures(), 261); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 10); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 52); +} + + +/** + * CneteditEditUnlock + * + * Cnetedit test of edit lock functionality with unlock=yes. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) one image cube list file (data/cnetedit/e0902065.cal.sub.cub) + * 3) points list file + * 4) ignore=no + * 5) delete=no + * 6) unlock=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, FunctionalTestCneteditEditUnlock) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "log=" + tempDir.path() + "/log.txt", + "cubelist=" + cubeListFile, + "pointlist=" + pointListFile, + "ignore=no", + "delete=no", + "unlock=yes", + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditLog; + + try { + cneteditLog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 0); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 0); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject ignoredPoints = log.findObject("Ignored").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0068"), + "Ignored from input"); + + // check ignored measures + PvlObject ignoredMeasures = log.findObject("Ignored").findObject("Measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0038"). + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0039 = ignoredMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0039. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0039. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0065"). + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0066"). + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0067 = ignoredMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0067. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0068 = ignoredMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, new0068. + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 108); + EXPECT_EQ(outNet.GetNumValidPoints(), 103); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 261); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 10); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditError + * + * Cnetedit test given a nonexistant input ControlNet. + */ +TEST_F(Cnetedit, FunctionalTestCneteditError) { + + QVector args = {"cnet=cnet.net", + "onet=cnet.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl log; + + try { + log = cnetedit(ui); + FAIL() << "Expected Exception for an invalid control network"; + } + catch(IException &e) { + EXPECT_TRUE(e.toString().toLatin1().contains("Invalid control network")) + << e.toString().toStdString(); + } +} + + +/** + * CneteditIgnore + * + * Cnetedit test with IGNOREALL=YES + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) one image cube list file (data/cnetedit/e0902065.cal.sub.cub) + * 3) measure list file (new0001,data/cnetedit/e0902065.cal.sub.cub) + * 4) delete=no + * 5) ignoreall=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, CneteditIgnore) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "cubelist=" + cubeListFile, + "measurelist=" + measureListFile, + "onet=" + tempDir.path() + "/out.net", +// "onet=/Users/kledmundson/ISISDev/cnetedit/Oct242023cne/ISIS3/isis/tests/data/cnetedit/ignore/truth/gtestCnet1.net", + "delete=no", + "ignoreall=yes", + "log=" + tempDir.path() + "/log.txt" +// "log=/Users/kledmundson/ISISDev/cnetedit/Oct242023cne/ISIS3/isis/tests/data/cnetedit/ignore/truth/gtestLog1.txt", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 0); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 0); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check ignored points + PvlObject ignoredPoints = log.findObject("Ignored").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0001"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0002"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0038"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0039"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0067"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0068"), + "Ignored from input"); + + // check ignored measures + PvlObject ignoredMeasures = log.findObject("Ignored").findObject("Measures"); + PvlGroup new0001 = ignoredMeasures.findGroup("new0001"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + + new0001.deleteKeyword("MGS/688540926:0/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Measure in MEASURELIST"); + + PvlGroup new0002 = ignoredMeasures.findGroup("new0002"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0002.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0002.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0038 = ignoredMeasures.findGroup("new0038"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + + new0038.deleteKeyword("MGS/718369703:160/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + + PvlGroup new0039 = ignoredMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0064"). + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + PvlGroup new0065 = ignoredMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + + new0065.deleteKeyword("MGS/688540926:0/MOC-WA/RED"); + new0065.deleteKeyword("MGS/691204200:96/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + PvlGroup new0066 = ignoredMeasures.findGroup("new0066"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + + new0066.deleteKeyword("MGS/688540926:0/MOC-WA/RED"); + new0066.deleteKeyword("MGS/691204200:96/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + PvlGroup new0067 = ignoredMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + + new0067.deleteKeyword("MGS/691204200:96/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + PvlGroup new0068 = ignoredMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0069"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0070"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0071"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0072"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0073"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0074"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0075"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0076"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0077"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0078"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0079"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0080"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0081"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0082"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0083"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0084"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0085"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0086"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0087"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0088"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0089"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0090"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0091"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0092"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0093"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0094"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0095"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0096"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0097"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0098"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0099"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0100"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0101"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0102"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0103"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0104"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0105"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0106"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0107"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0108"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 108); + EXPECT_EQ(outNet.GetNumValidPoints(), 97); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 261); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 61); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditIgnoreMeasuresPoints + * + * Cnetedit test with ignore measures and points lists. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) one image cube list file (data/cnetedit/e0902065.cal.sub.cub) + * 3) point list file + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, CneteditIgnoreMeasuresPoints) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "cubelist=" + cubeListFile, + "log=" + tempDir.path() + "/log.txt", + "pointlist=" + pointListFile, + "onet=" + tempDir.path() + "/out.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 16); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 77); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0001"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0002"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0007"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0008"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0020"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0036"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0038"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0039"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0050"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0066"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0067"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0068"), + "Ignored from input"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup new0001 = deletedMeasures.findGroup("new0001"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0002 = deletedMeasures.findGroup("new0002"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0002.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0002.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0007 = deletedMeasures.findGroup("new0007"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0008 = deletedMeasures.findGroup("new0008"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0020 = deletedMeasures.findGroup("new0020"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0031 = deletedMeasures.findGroup("new0031"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0032 = deletedMeasures.findGroup("new0032"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0036 = deletedMeasures.findGroup("new0036"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0038 = deletedMeasures.findGroup("new0038"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0039 = deletedMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0050 = deletedMeasures.findGroup("new0050"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0064 = deletedMeasures.findGroup("new0064"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0065 = deletedMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0066 = deletedMeasures.findGroup("new0066"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0067 = deletedMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0068 = deletedMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0069"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0070"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0071"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0072"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0073"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0074"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0075"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0076"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0077"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0078"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0079"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0080"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0081"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0082"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0083"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0084"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0085"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0086"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0087"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0088"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0089"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0090"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0091"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0092"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0093"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0094"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0095"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0096"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0097"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0098"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0099"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0100"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0101"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0102"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0103"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0104"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0105"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0106"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0107"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0108"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 92); + EXPECT_EQ(outNet.GetNumValidPoints(), 92); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 184); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditIgnorePoints + * + * Cnetedit test with ignore points list. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) point list file + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, CneteditIgnorePoints) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "log=" + tempDir.path() + "/log.txt", + "pointlist=" + pointListFile, + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 14); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 33); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0001"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0007"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0008"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0020"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0036"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0038"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0039"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0050"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0067"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0068"), + "Ignored from input"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup new0001 = deletedMeasures.findGroup("new0001"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0007 = deletedMeasures.findGroup("new0007"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0008 = deletedMeasures.findGroup("new0008"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0020 = deletedMeasures.findGroup("new0020"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0031 = deletedMeasures.findGroup("new0031"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0032 = deletedMeasures.findGroup("new0032"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0036 = deletedMeasures.findGroup("new0036"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0038 = deletedMeasures.findGroup("new0038"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0039 = deletedMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0050 = deletedMeasures.findGroup("new0050"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0064 = deletedMeasures.findGroup("new0064"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0064"). + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0065 = deletedMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0066"). + findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0067 = deletedMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0068 = deletedMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 94); + EXPECT_EQ(outNet.GetNumValidPoints(), 94); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 228); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditIgnoreAllPoints + * + * Cnetedit test with ignore points list and IGNOREALL=YES. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) point list file + * 3) ignoreall=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, CneteditIgnoreAllPoints) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "log=" + tempDir.path() + "/log.txt", + "pointlist=" + pointListFile, + "ignoreall=yes", + "onet=" + tempDir.path() + "/out.net" + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 15); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 35); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0001"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0007"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0008"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0020"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0036"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0038"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0039"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0050"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0066"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0067"), + "Reference measure ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0068"), + "Ignored from input"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup new0001 = deletedMeasures.findGroup("new0001"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0007 = deletedMeasures.findGroup("new0007"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0008 = deletedMeasures.findGroup("new0008"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0020 = deletedMeasures.findGroup("new0020"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0031 = deletedMeasures.findGroup("new0031"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0032 = deletedMeasures.findGroup("new0032"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0036 = deletedMeasures.findGroup("new0036"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/691204200:96/MOC-WA/RED "), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0038 = deletedMeasures.findGroup("new0038"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + + new0038.deleteKeyword("MGS/718369703:160/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0038.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0039 = deletedMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0050 = deletedMeasures.findGroup("new0050"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0064 = deletedMeasures.findGroup("new0064"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + PvlGroup new0065 = deletedMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + + new0065.deleteKeyword("MGS/688540926:0/MOC-WA/RED"); + new0065.deleteKeyword("MGS/691204200:96/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0066 = deletedMeasures.findGroup("new0066"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + + new0066.deleteKeyword("MGS/688540926:0/MOC-WA/RED"); + new0066.deleteKeyword("MGS/691204200:96/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0067 = deletedMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Reference ignored"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + + new0067.deleteKeyword("MGS/691204200:96/MOC-WA/RED"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0068 = deletedMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 93); + EXPECT_EQ(outNet.GetNumValidPoints(), 93); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 226); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + +/** + * CneteditNoDelete + * + * Cnetedit test with DELETE=NO. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) one image cube list file (data/cnetedit/e0902065.cal.sub.cub) + * 3) point list file + * 4) delete=no + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, CneteditNoDelete) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "cubelist=" + cubeListFile, + "log=" + tempDir.path() + "/log.txt", + "pointlist=" + pointListFile, + "delete=no", + "onet=" + tempDir.path() + "/out.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 0); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 0); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check ignored points + PvlObject ignoredPoints = log.findObject("Ignored").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0001"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0007"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0008"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0020"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0036"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0050"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredPoints.findKeyword("new0068"), + "Ignored from input"); + + // check ignored measures + PvlObject ignoredMeasures = log.findObject("Ignored").findObject("Measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0001"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0002"). + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0038"). + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0039 = ignoredMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0064"). + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + PvlGroup new0065 = ignoredMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + PvlGroup new0066 = ignoredMeasures.findGroup("new0066"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + PvlGroup new0067 = ignoredMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0068 = ignoredMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0069"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0070"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0071"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0072"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0073"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0074"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0075"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0076"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0077"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0078"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0079"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0080"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0081"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0082"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0083"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0084"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0085"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0086"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0087"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0088"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0089"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0090"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0091"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0092"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0093"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0094"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0095"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0096"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0097"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0098"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0099"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0100"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0101"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0102"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0103"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0104"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0105"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0106"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0107"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("new0108"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 108); + EXPECT_EQ(outNet.GetNumValidPoints(), 97); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 261); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 55); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + +/** + * CneteditPreservePoints + * + * Cnetedit test with PRESERVE=YES. + * Input ... + * 1) ControlNet with 108 points (data/cnetedit/cnet_108pts.pvl) + * 2) one image cube list file (data/cnetedit/e0902065.cal.sub.cub) + * 3) point list file + * 4) preserve=yes + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(Cnetedit, CneteditPreservePoints) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet108File, + "cubelist=" + cubeListFile, + "log=" + tempDir.path() + "/log.txt", + "pointlist=" + pointListFile, + "preserve=yes", + "onet=" + tempDir.path() + "/out.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 12); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 73); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0001"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0007"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0008"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0020"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0031"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0032"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0036"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0039"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0050"), + "Point ID in POINTLIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0064"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0065"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("new0068"), + "Ignored from input"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup new0001 = deletedMeasures.findGroup("new0001"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0001.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0002"). + findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + PvlGroup new0007 = deletedMeasures.findGroup("new0007"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0007.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0008 = deletedMeasures.findGroup("new0008"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0008.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0020 = deletedMeasures.findGroup("new0020"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0020.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0031 = deletedMeasures.findGroup("new0031"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0031.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0032 = deletedMeasures.findGroup("new0032"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0032.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0036 = deletedMeasures.findGroup("new0036"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0036.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0038"). + findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0039 = deletedMeasures.findGroup("new0039"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0039.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0050 = deletedMeasures.findGroup("new0050"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0050.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0064 = deletedMeasures.findGroup("new0064"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0064.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0065 = deletedMeasures.findGroup("new0065"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Point deleted"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0065.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Point deleted"); + PvlGroup new0066 = deletedMeasures.findGroup("new0066"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0066.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Serial Number in CUBELIST"); + PvlGroup new0067 = deletedMeasures.findGroup("new0067"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0067.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + PvlGroup new0068 = deletedMeasures.findGroup("new0068"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/718369703:160/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/688540926:0/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + new0068.findKeyword("MGS/691204200:96/MOC-WA/RED"), + "Ignored from input"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0069"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0070"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0071"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0072"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0073"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0074"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0075"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0076"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0077"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0078"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0079"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0080"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0081"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0082"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0083"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0084"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0085"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0086"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0087"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0088"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0089"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0090"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0091"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0092"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0093"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0094"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0095"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0096"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0097"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0098"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0099"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0100"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0101"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0102"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0103"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0104"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0105"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0106"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0107"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedMeasures.findGroup("new0108"). + findKeyword("MGS/688540926:0/MOC-WA/RED "), + "Serial Number in CUBELIST"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 96); + EXPECT_EQ(outNet.GetNumValidPoints(), 96); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 188); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditMeasureListGeneral + * General cnetedit test with bad measures list. + * Input ... + * 1) ControlNet with 35 points (data/cnetedit/cnet_35pts.pvl) + * 2) list file of bad measures + * 3) delete=no + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(CneteditMeasureList, CneteditMeasureListGeneral) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet35File, + "log=" + tempDir.path() + "/log.txt", + "measurelist=" + badMeasureListFile1, + "delete=no", + "onet=" + tempDir.path() + "/out.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 0); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 0); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // no ignored points + EXPECT_EQ(log.findObject("Ignored").findObject("Points").keywords(), 0); + + // check ignored measures + PvlObject ignoredMeasures = log.findObject("Ignored").findObject("Measures"); + PvlGroup bndry_32 = ignoredMeasures.findGroup("I24827003RDR_bndry_32"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/766864399.204"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/764644820.000"), + "Measure in MEASURELIST"); + PvlGroup bndry_35 = ignoredMeasures.findGroup("I24827003RDR_bndry_35"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/860700556.051"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + PvlGroup bndry_36 = ignoredMeasures.findGroup("I24827003RDR_bndry_36"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_36.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_36.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_50"). + findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_53"). + findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_56"). + findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_8"). + findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 35); + EXPECT_EQ(outNet.GetNumValidPoints(), 35); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 91); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 11); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + +/** + * CneteditMeasureListIgnoreAll + * + * Cnetedit test with bad measures list and IGNOREALL=YES; DELETE=NO. + * Input ... + * 1) ControlNet with 35 points (data/cnetedit/cnet_35pts.pvl) + * 2) bad measure list + * 3) ignoreall=yes + * 4) delete=no + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(CneteditMeasureList, CneteditMeasureListIgnoreAll) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet35File, + "log=" + tempDir.path() + "/log.txt", + "measurelist=" + badMeasureListFile2, + "ignoreall=yes", + "delete=no", + "onet=" + tempDir.path() + "/out.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 0); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"), 0); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // no ignored points + EXPECT_EQ(log.findObject("Ignored").findObject("Points").keywords(), 1); + + // check ignored measures + PvlObject ignoredMeasures = log.findObject("Ignored").findObject("Measures"); + PvlGroup bndry_32 = ignoredMeasures.findGroup("I24827003RDR_bndry_32"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/766864399.204"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/764644820.000"), + "Measure in MEASURELIST"); + PvlGroup bndry_35 = ignoredMeasures.findGroup("I24827003RDR_bndry_35"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/860700556.051"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + PvlGroup bndry_36 = ignoredMeasures.findGroup("I24827003RDR_bndry_36"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_36.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_36.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_50"). + findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_53"). + findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_56"). + findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, ignoredMeasures.findGroup("I24827003RDR_bndry_8"). + findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 35); + EXPECT_EQ(outNet.GetNumValidPoints(), 34); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 91); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 13); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} + + +/** + * CneteditMeasureListDelete + * + * Cnetedit test with bad measures list and delete=yes. + * Input ... + * 1) ControlNet with 35 points (data/cnetedit/cnet_35pts.pvl) + * 2) bad measure list + * 4) delete=yes (default) + * + * Output ... + * 1) edited ControlNet + * 2) Pvl log file. + */ +TEST_F(CneteditMeasureList, CneteditMeasureListDelete) { + QTemporaryDir tempDir; + + QVector args = {"cnet=" + cnet35File, + "log=" + tempDir.path() + "/log.txt", + "measurelist=" + badMeasureListFile1, + "onet=" + tempDir.path() + "/out.net", + }; + + UserInterface ui(APP_XML, args); + + Pvl cneteditlog; + + try { + cneteditlog = cnetedit(ui); + } + catch(IException &e) { + FAIL() << e.toString().toStdString().c_str() << std::endl; + } + + // read back log file + Pvl log; + try { + log.read(tempDir.path()+ "/log.txt"); + } + catch (IException &e) { + FAIL() << "Unable to open log file: " << e.what() << std::endl; + } + + // check number of deleted points and measures + EXPECT_EQ((int)log.findKeyword("PointsDeleted"), 5); + EXPECT_EQ((int)log.findKeyword("MeasuresDeleted"),16); + + // no edit locked points or measures + EXPECT_EQ(log.findObject("EditLocked").findObject("Points").keywords(), 0); + EXPECT_EQ(log.findObject("EditLocked").findObject("Measures").keywords(), 0); + + // no retained references + EXPECT_EQ(log.findObject("RetainedReferences").keywords(), 0); + + // check deleted points + PvlObject deletedPoints = log.findObject("Deleted").findObject("Points"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("I24827003RDR_bndry_32"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("I24827003RDR_bndry_50"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("I24827003RDR_bndry_53"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("I24827003RDR_bndry_56"), + "Too few measures"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, deletedPoints.findKeyword("I24827003RDR_bndry_8"), + "Too few measures"); + + // check deleted measures + PvlObject deletedMeasures = log.findObject("Deleted").findObject("Measures"); + PvlGroup bndry_32 = deletedMeasures.findGroup("I24827003RDR_bndry_32"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/766864399.204"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/764644820.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_32.findKeyword("Odyssey/THEMIS_IR/860700556.051"), + "Point deleted"); + PvlGroup bndry_35 = deletedMeasures.findGroup("I24827003RDR_bndry_35"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/860700556.051"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_35.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + PvlGroup bndry_36 = deletedMeasures.findGroup("I24827003RDR_bndry_36"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_36.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_36.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + PvlGroup bndry_50 = deletedMeasures.findGroup("I24827003RDR_bndry_50"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_50.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_50.findKeyword("Odyssey/THEMIS_IR/823680993.230"), + "Point deleted"); + PvlGroup bndry_53 = deletedMeasures.findGroup("I24827003RDR_bndry_53"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_53.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_53.findKeyword("Odyssey/THEMIS_IR/823680993.230"), + "Point deleted"); + PvlGroup bndry_56 = deletedMeasures.findGroup("I24827003RDR_bndry_56"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_56.findKeyword("Odyssey/THEMIS_IR/869400711.102"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_56.findKeyword("Odyssey/THEMIS_IR/823680993.230"), + "Point deleted"); + PvlGroup bndry_8 = deletedMeasures.findGroup("I24827003RDR_bndry_8"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_8.findKeyword("Odyssey/THEMIS_IR/748799078.000"), + "Measure in MEASURELIST"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, + bndry_8.findKeyword("Odyssey/THEMIS_IR/760206015.230"), + "Point deleted"); + + // check output ControlNetwork + ControlNet outNet(tempDir.path() + "/out.net"); + EXPECT_EQ(outNet.GetNumPoints(), 30); + EXPECT_EQ(outNet.GetNumValidPoints(), 30); + EXPECT_EQ(outNet.GetNumEditLockPoints(), 0); + EXPECT_EQ(outNet.GetNumMeasures(), 75); + EXPECT_EQ(outNet.GetNumIgnoredMeasures(), 0); + EXPECT_EQ(outNet.GetNumEditLockMeasures(), 0); +} \ No newline at end of file diff --git a/isis/tests/data/cnetedit/I07873009RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I07873009RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..bea220d69b --- /dev/null +++ b/isis/tests/data/cnetedit/I07873009RDR.dstr.cub.label.pvl @@ -0,0 +1,387 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 320 + TileLines = 472 + + Group = Dimensions + Samples = 320 + Lines = 17936 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = MAPPING + StartTime = 2003-09-23T15:42:25.400 + StopTime = 2003-09-23T15:52:23.262 + SpacecraftClockCount = 748799078.000 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I07873009RDR + ProductCreationTime = 2004-10-14T00:21:58 + ProductVersionId = 1.1 + OrbitNumber = 07873 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 7873 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 2 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_map7.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_map7.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 23023617 + Bytes = 8960 + Records = 140 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 117603812.11191 + CkTableEndTime = 117604414.30884 + CkTableOriginalSize = 17937 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_map7.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 23032577 + Bytes = 4200 + Records = 75 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 117603812.11191 + SpkTableEndTime = 117604414.30884 + SpkTableOriginalSize = 17937.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_map7.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 23036777 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 117603812.11191 + CkTableEndTime = 117604414.30884 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 266.33576028989 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 23036905 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 117603812.11191 + SpkTableEndTime = 117604414.30884 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 23037017 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 23073798 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_748799078.000_COMPUTED = b4105486f7099c41 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 23037641 + Bytes = 31880 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 23069521 + Bytes = 4277 +End_Object +End diff --git a/isis/tests/data/cnetedit/I09477002RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I09477002RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..84d977c639 --- /dev/null +++ b/isis/tests/data/cnetedit/I09477002RDR.dstr.cub.label.pvl @@ -0,0 +1,387 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 320 + TileLines = 128 + + Group = Dimensions + Samples = 320 + Lines = 10768 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = MAPPING + StartTime = 2004-02-02T16:17:44.937 + StopTime = 2004-02-02T16:23:43.874 + SpacecraftClockCount = 760206015.230 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I09477002RDR + ProductCreationTime = 2004-10-14T18:27:41 + ProductVersionId = 1.1 + OrbitNumber = 09477 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 9477 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 9 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_map9.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_map9.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 13991937 + Bytes = 5504 + Records = 86 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 129010729.38783 + CkTableEndTime = 129011095.24634 + CkTableOriginalSize = 10769 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_map9.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 13997441 + Bytes = 1736 + Records = 31 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 129010729.38783 + SpkTableEndTime = 129011095.24634 + SpkTableOriginalSize = 10769.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_map9.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 13999177 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 129010729.38783 + CkTableEndTime = 129011095.24634 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 343.59609359065 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 13999305 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 129010729.38783 + SpkTableEndTime = 129011095.24634 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 13999417 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 14024477 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_760206015.230_COMPUTED = e2727ca430c29e41 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 14000041 + Bytes = 19582 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 14019623 + Bytes = 4854 +End_Object +End diff --git a/isis/tests/data/cnetedit/I10101002RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I10101002RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..3801944460 --- /dev/null +++ b/isis/tests/data/cnetedit/I10101002RDR.dstr.cub.label.pvl @@ -0,0 +1,387 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 320 + TileLines = 128 + + Group = Dimensions + Samples = 320 + Lines = 10768 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = MAPPING + StartTime = 2004-03-25T01:17:41.845 + StopTime = 2004-03-25T01:23:40.774 + SpacecraftClockCount = 764644820.000 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I10101002RDR + ProductCreationTime = 2004-10-15T00:32:17 + ProductVersionId = 1.1 + OrbitNumber = 10101 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 10101 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 9 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_map9.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_map9.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 13991937 + Bytes = 5504 + Records = 86 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 133449526.29696 + CkTableEndTime = 133449892.15548 + CkTableOriginalSize = 10769 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_map9.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 13997441 + Bytes = 1568 + Records = 28 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 133449526.29696 + SpkTableEndTime = 133449892.15548 + SpkTableOriginalSize = 10769.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_map9.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 13999009 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 133449526.29696 + CkTableEndTime = 133449892.15548 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 9.5252197504187 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 13999137 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 133449526.29696 + SpkTableEndTime = 133449892.15548 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 13999249 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 14024342 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_764644820.000_COMPUTED = 05661fd81cd19f41 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 13999873 + Bytes = 19582 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 14019455 + Bytes = 4887 +End_Object +End diff --git a/isis/tests/data/cnetedit/I10413004RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I10413004RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..fa1d80b26f --- /dev/null +++ b/isis/tests/data/cnetedit/I10413004RDR.dstr.cub.label.pvl @@ -0,0 +1,387 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 320 + TileLines = 450 + + Group = Dimensions + Samples = 320 + Lines = 3600 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = MAPPING + StartTime = 2004-04-19T17:50:38.067 + StopTime = 2004-04-19T17:52:38.067 + SpacecraftClockCount = 766864399.204 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I10413004RDR + ProductCreationTime = 2004-09-28T13:50:33 + ProductVersionId = 1.0 + OrbitNumber = 10413 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 10413 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 9 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_map10.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_map10.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 4673537 + Bytes = 2048 + Records = 32 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 135669102.51927 + CkTableEndTime = 135669229.77585 + CkTableOriginalSize = 3601 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_map10.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 4675585 + Bytes = 336 + Records = 6 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 135669102.51927 + SpkTableEndTime = 135669229.77585 + SpkTableOriginalSize = 3601.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_map10.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 4675921 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 135669102.51927 + CkTableEndTime = 135669229.77585 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 21.755944220554 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 4676049 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 135669102.51927 + SpkTableEndTime = 135669229.77585 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 4676161 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 4688865 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_766864399.204_COMPUTED = a08581dc4a2ca041 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 4676785 + Bytes = 7198 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 4683983 + Bytes = 4882 +End_Object +End diff --git a/isis/tests/data/cnetedit/I18400005RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I18400005RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..3c7096ad62 --- /dev/null +++ b/isis/tests/data/cnetedit/I18400005RDR.dstr.cub.label.pvl @@ -0,0 +1,388 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 320 + TileLines = 128 + + Group = Dimensions + Samples = 320 + Lines = 10768 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = EXTENDED-1 + StartTime = 2006-02-06T08:12:21.766 + StopTime = 2006-02-06T08:18:20.703 + SpacecraftClockCount = 823680993.230 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpatialSumming = 1 + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I18400005RDR + ProductCreationTime = 2008-06-04T16:19:13 + ProductVersionId = 1.1 + OrbitNumber = 18400 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 18400 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 9 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_ext6.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_ext6.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 13991937 + Bytes = 9024 + Records = 141 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 192485606.20742 + CkTableEndTime = 192485972.06594 + CkTableOriginalSize = 10769 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_ext6.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 14000961 + Bytes = 1736 + Records = 31 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 192485606.20742 + SpkTableEndTime = 192485972.06594 + SpkTableOriginalSize = 10769.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_ext6.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 14002697 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 192485606.20742 + CkTableEndTime = 192485972.06594 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 7.7251945911519 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 14002825 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 192485606.20742 + SpkTableEndTime = 192485972.06594 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 14002937 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 14028182 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_823680993.230_COMPUTED = 68dbe1cb31f2a641 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 14003561 + Bytes = 19582 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 14023143 + Bytes = 5039 +End_Object +End diff --git a/isis/tests/data/cnetedit/I23604003RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I23604003RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..b71f721e2f --- /dev/null +++ b/isis/tests/data/cnetedit/I23604003RDR.dstr.cub.label.pvl @@ -0,0 +1,388 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 320 + TileLines = 449 + + Group = Dimensions + Samples = 320 + Lines = 7184 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = EXTENDED-1 + StartTime = 2007-04-10T19:24:04.439 + StopTime = 2007-04-10T19:28:03.903 + SpacecraftClockCount = 860700556.051 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpatialSumming = 1 + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I23604003RDR + ProductCreationTime = 2007-04-13T15:26:13 + ProductVersionId = 1.0 + OrbitNumber = 23604 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 23604 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 9 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_ext11.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_ext11.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 9261057 + Bytes = 3584 + Records = 56 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 229505108.63108 + CkTableEndTime = 229505355.18863 + CkTableOriginalSize = 7185 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_ext11.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 9264641 + Bytes = 896 + Records = 16 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 229505108.63108 + SpkTableEndTime = 229505355.18863 + SpkTableOriginalSize = 7185.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_ext11.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 9265537 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 229505108.63108 + CkTableEndTime = 229505355.18863 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 216.68369485425 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 9265665 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 229505108.63108 + SpkTableEndTime = 229505355.18863 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 9265777 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 9284827 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_860700556.051_COMPUTED = 56c4baa8f05bab41 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 9266401 + Bytes = 13390 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 9279791 + Bytes = 5036 +End_Object +End diff --git a/isis/tests/data/cnetedit/I24827003RDR.dstr.cub.label.pvl b/isis/tests/data/cnetedit/I24827003RDR.dstr.cub.label.pvl new file mode 100644 index 0000000000..82e2439cc6 --- /dev/null +++ b/isis/tests/data/cnetedit/I24827003RDR.dstr.cub.label.pvl @@ -0,0 +1,388 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 160 + TileLines = 128 + + Group = Dimensions + Samples = 160 + Lines = 5384 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = MARS_ODYSSEY + InstrumentId = THEMIS_IR + TargetName = MARS + MissionPhaseName = EXTENDED-1 + StartTime = 2007-07-20T12:06:24.995 + StopTime = 2007-07-20T12:12:23.932 + SpacecraftClockCount = 869400711.102 + GainNumber = 16 + OffsetNumber = 2 + MissingScanLines = 0 + TimeDelayIntegration = ENABLED + SpatialSumming = 2 + SpacecraftClockOffset = 0.0 + End_Group + + Group = Archive + DataSetId = ODY-M-THM-3-IRRDR-V1.0 + ProducerId = ODY_THM_TEAM + ProductId = I24827003RDR + ProductCreationTime = 2008-01-04T17:31:37 + ProductVersionId = 1.0 + OrbitNumber = 24827 + FlightSoftwareVersionId = 1.00 + CommandSequenceNumber = 24827 + Description = "No Description Given" + End_Group + + Group = BandBin + OriginalBand = 7 + Center = 12.57 + Width = 0.81 + FilterNumber = 9 + End_Group + + Group = Kernels + NaifFrameCode = -53031 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $odyssey/kernels/ck/m01_sc_ext12.bc, + $odyssey/kernels/fk/m01_v29.tf) + Instrument = Null + SpacecraftClock = $odyssey/kernels/sclk/ORB1_SCLKSCET.00184.tsc + InstrumentPosition = (Table, $odyssey/kernels/spk/m01_ext12.bsp) + InstrumentAddendum = $odyssey/kernels/iak/themisAddendum003.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 2 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 3588097 + Bytes = 5504 + Records = 86 + ByteOrder = Lsb + TimeDependentFrames = (-53000, 16, 1) + ConstantFrames = (-53031, -53030, -53000) + ConstantRotation = (0.0013835021734055, 0.011529976186854, + 0.99993257051207, 0.28811330695433, 0.95752799265849, + -0.011439651709814, -0.95759532594806, + 0.28810970640458, -0.0019971975093594) + CkTableStartTime = 238205250.8296 + CkTableEndTime = 238205615.29006 + CkTableOriginalSize = 5385 + Description = "Created by spiceinit" + Kernels = ($odyssey/kernels/ck/m01_sc_ext12.bc, + $odyssey/kernels/fk/m01_v29.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 3593601 + Bytes = 728 + Records = 13 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 238205250.8296 + SpkTableEndTime = 238205615.29006 + SpkTableOriginalSize = 5385.0 + Description = "Created by spiceinit" + Kernels = $odyssey/kernels/spk/m01_ext12.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 3594329 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 238205250.8296 + CkTableEndTime = 238205615.29006 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 280.0343296642 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 3594457 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 238205250.8296 + SpkTableEndTime = 238205615.29006 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = CameraStatistics + StartByte = 3594569 + Bytes = 624 + Records = 12 + ByteOrder = Lsb + + Group = Field + Name = Name + Type = Text + Size = 20 + End_Group + + Group = Field + Name = Minimum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Maximum + Type = Double + Size = 1 + End_Group + + Group = Field + Name = Average + Type = Double + Size = 1 + End_Group + + Group = Field + Name = StandardDeviation + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 3609866 + Bytes = 4311 +End_Object + +Object = NaifKeywords + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + CLOCK_ET_-53_869400711.102_COMPUTED = b79a54827265ac41 + INS-53031_TRANSX = (0.0, 0.05, 0.0) + INS-53031_TRANSY = (0.0, 0.0, 0.05) + INS-53031_ITRANSS = (0.0, 20.0, 0.0) + INS-53031_ITRANSL = (0.0, 0.0, 20.0) +End_Object + +Object = Polygon + Name = Footprint + StartByte = 3595193 + Bytes = 9864 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 3605057 + Bytes = 4809 +End_Object +End diff --git a/isis/tests/data/cnetedit/PSP_002733_1880_RED4.crop.pvl b/isis/tests/data/cnetedit/PSP_002733_1880_RED4.crop.pvl new file mode 100644 index 0000000000..945a054912 --- /dev/null +++ b/isis/tests/data/cnetedit/PSP_002733_1880_RED4.crop.pvl @@ -0,0 +1,518 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 128 + TileLines = 128 + + Group = Dimensions + Samples = 2048 + Lines = 2000 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = "MARS RECONNAISSANCE ORBITER" + InstrumentId = HIRISE + TargetName = Mars + StartTime = 2007-02-25T09:49:57.917 + StopTime = 2007-02-25T09:50:04.917 + ObservationStartCount = 856864216:41044 + SpacecraftClockStartCount = 856864216:53351 + SpacecraftClockStopCount = 856864223:53351 + ReadoutStartCount = 856864468:00780 + CalibrationStartTime = 2007-02-25T09:49:57.902 + CalibrationStartCount = 856864216:52387 + MissionPhaseName = "PRIMARY SCIENCE PHASE" + LineExposureDuration = 87.5000 + ScanExposureDuration = 87.5000 + DeltaLineTimerCount = 216 + Summing = 1 + Tdi = 128 + FocusPositionCount = 2023 + PoweredCpmmFlag = (On, On, On, On, On, On, On, On, On, On, On, + On, On, On) + CpmmNumber = 5 + CcdId = RED4 + ChannelNumber = 2 + LookupTableType = Stored + LookupTableNumber = 10 + LookupTableMinimum = -9998 + LookupTableMaximum = -9998 + LookupTableMedian = -9998 + LookupTableKValue = -9998 + StimulationLampFlag = (Off, Off, Off) + HeaterControlFlag = (On, On, On, On, On, On, On, On, On, On, On, + On, On, On) + OptBnchFlexureTemperature = 20.0215 + OptBnchMirrorTemperature = 20.1082 + OptBnchFoldFlatTemperature = 20.3683 + OptBnchFpaTemperature = 19.7615 + OptBnchFpeTemperature = 19.5881 + OptBnchLivingRmTemperature = 20.0215 + OptBnchBoxBeamTemperature = 20.1949 + OptBnchCoverTemperature = 19.9348 + FieldStopTemperature = 18.4616 + FpaPositiveYTemperature = 19.5881 + FpaNegativeYTemperature = 19.5881 + FpeTemperature = 17.7686 + PrimaryMirrorMntTemperature = 20.1082 + PrimaryMirrorTemperature = 20.455 + PrimaryMirrorBafTemperature = 3.34153 + MsTrussLeg0ATemperature = 19.8482 + MsTrussLeg0BTemperature = 19.9348 + MsTrussLeg120ATemperature = 19.4148 + MsTrussLeg120BTemperature = 20.1949 + MsTrussLeg240ATemperature = 20.5417 + MsTrussLeg240BTemperature = 20.6284 + BarrelBaffleTemperature = -12.4606 + SunShadeTemperature = -14.001 + SpiderLeg30Temperature = 16.1233 + SpiderLeg120Temperature = -9999 + SpiderLeg240Temperature = -9999 + SecMirrorMtrRngTemperature = 19.7615 + SecMirrorTemperature = 20.8885 + SecMirrorBaffleTemperature = -9.71965 + IeaTemperature = 25.9221 + FocusMotorTemperature = 21.3221 + IePwsBoardTemperature = 17.8502 + CpmmPwsBoardTemperature = 21.4948 + MechTlmBoardTemperature = 35.1464 + InstContBoardTemperature = 34.6875 + DllLockedFlag = (YES, YES) + DllResetCount = 0 + DllLockedOnceFlag = (YES, YES) + DllFrequenceCorrectCount = 4 + ADCTimingSetting = -9999 + Unlutted = TRUE + StitchedChannels = (0, 1) + StitchedProductIds = (PSP_002733_1880_RED4_0, + PSP_002733_1880_RED4_1) + End_Group + + Group = Archive + DataSetId = MRO-M-HIRISE-2-EDR-V1.0 + ProducerId = UA + ObservationId = PSP_002733_1880 + ProductId = PSP_002733_1880_RED4_0 + ProductVersionId = 1.0 + EdrProductCreationTime = 2007-02-25T22:21:23 + RationaleDescription = Null + OrbitNumber = 2733 + SoftwareName = "HiRISE_Observation v2.9.1 (2.43 2006/10/0 + 05:41:12)" + ObservationStartTime = 2007-02-25T09:49:57.729 + ReadoutStartTime = 2007-02-25T09:54:09.115 + TrimLines = 1797 + FelicsCompressionFlag = YES + IdFlightSoftwareName = IE_FSW_V4 + End_Group + + Group = BandBin + Name = Red + Center = 700 + Width = 300 + End_Group + + Group = Kernels + NaifIkCode = -74699 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, + $mro/kernels/ck/mro_sc_psp_070220_070226.bc, + $mro/kernels/fk/mro_v14.tf) + Instrument = $mro/kernels/ik/mro_hirise_v11.ti + SpacecraftClock = $mro/kernels/sclk/MRO_SCLKSCET.00038.65536.tsc + InstrumentPosition = (Table, $mro/kernels/spk/mro_psp2.bsp) + InstrumentAddendum = $mro/kernels/iak/hiriseAddendum006.ti + ShapeModel = Null + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 1 + End_Group + + Group = Radiometry + CalibrationParameters = (OFFSET:/HiRISE/Data/HiCalCoefficients/Matrices/B- + _TDI128_BIN1_0001.cub, + GAIN:/HiRISE/Data/HiCalCoefficients/Matrices/A_TD- + I128_BIN1_0001.cub, + GAIN:/HiRISE/Data/HiCalCoefficients/Matrices/G_TD- + I128_BIN1_0001.cub) + End_Group + + Group = AlphaCube + AlphaSamples = 2048 + AlphaLines = 80000 + AlphaStartingSample = 0.5 + AlphaStartingLine = 0.5 + AlphaEndingSample = 2048.5 + AlphaEndingLine = 2000.5 + BetaSamples = 2048 + BetaLines = 2000 + End_Group + + Group = RadiometricCalibration + Name = hiclean + Version = 1.4.1 + Compatability = "Alan D. clean.pro, version 2/29 sep 2006" + Revision = "$Revision: 1.3 $" + MaskStartingRow = 21 + MaskEndingRow = 38 + BadMaskPixels = 0 + MaskInducedNulls = 0 + DarkStartingColumn = 4 + DarkEndingColumn = 11 + BadDarkPixels = 0 + DarkInducedNulls = 0 + LastGoodLine = 80000 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = "HiRISE Calibration Ancillary" + StartByte = 8454145 + Bytes = 20160 + Records = 168 + ByteOrder = Lsb + + Group = Field + Name = GapFlag + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = LineNumber + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = BufferPixels + Type = Integer + Size = 12 + End_Group + + Group = Field + Name = DarkPixels + Type = Integer + Size = 16 + End_Group +End_Object + +Object = Table + Name = "HiRISE Calibration Image" + StartByte = 8474305 + Bytes = 688128 + Records = 168 + ByteOrder = Lsb + + Group = Field + Name = Calibration + Type = Integer + Size = 1024 + End_Group +End_Object + +Object = Table + Name = "HiRISE Ancillary" + StartByte = 9162433 + Bytes = 9600000 + Records = 80000 + ByteOrder = Lsb + Association = Lines + + Group = Field + Name = GapFlag + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = LineNumber + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = BufferPixels + Type = Integer + Size = 12 + End_Group + + Group = Field + Name = DarkPixels + Type = Integer + Size = 16 + End_Group +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 18762433 + Bytes = 256 + Records = 4 + ByteOrder = Lsb + TimeDependentFrames = (-74000, -74900, 1) + ConstantFrames = (-74690, -74000) + ConstantRotation = (0.9999703083413, 0.0, -0.0077059999872177, + 8.81584889031119e-06, 0.99999934560434, + 0.0011439900269605, 0.0077059949444447, + -0.0011440239949305, 0.99996965396507) + CkTableStartTime = 225669063.07843 + CkTableEndTime = 225669063.25343 + CkTableOriginalSize = 2001 + Description = "Created by spiceinit" + Kernels = ($mro/kernels/ck/mro_sc_psp_070220_070226.bc, + $mro/kernels/fk/mro_v14.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 21962473 + Bytes = 168 + Records = 3 + ByteOrder = Lsb + CacheType = HermiteSpline + Description = "Created by spiceinit" + Kernels = $mro/kernels/spk/mro_psp2.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 24522505 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 225669063.07843 + CkTableEndTime = 225669063.25343 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 190.08669942814 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 27722545 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 30373328 + Bytes = 14212 +End_Object + +Object = OriginalLabel + Name = OriginalLabel + StartByte = 30282577 + Bytes = 30940 +End_Object + +Object = Polygon + Name = Footprint + StartByte = 30369908 + Bytes = 3420 +End_Object +End diff --git a/isis/tests/data/cnetedit/PSP_002733_1880_RED5.crop.pvl b/isis/tests/data/cnetedit/PSP_002733_1880_RED5.crop.pvl new file mode 100644 index 0000000000..683e0d6085 --- /dev/null +++ b/isis/tests/data/cnetedit/PSP_002733_1880_RED5.crop.pvl @@ -0,0 +1,518 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 128 + TileLines = 128 + + Group = Dimensions + Samples = 2048 + Lines = 2000 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = "MARS RECONNAISSANCE ORBITER" + InstrumentId = HIRISE + TargetName = Mars + StartTime = 2007-02-25T09:49:57.866 + StopTime = 2007-02-25T09:50:04.866 + ObservationStartCount = 856864216:41044 + SpacecraftClockStartCount = 856864216:50008 + SpacecraftClockStopCount = 856864223:50008 + ReadoutStartCount = 856864554:12778 + CalibrationStartTime = 2007-02-25T09:49:57.851 + CalibrationStartCount = 856864216:49044 + MissionPhaseName = "PRIMARY SCIENCE PHASE" + LineExposureDuration = 87.5000 + ScanExposureDuration = 87.5000 + DeltaLineTimerCount = 216 + Summing = 1 + Tdi = 128 + FocusPositionCount = 2023 + PoweredCpmmFlag = (On, On, On, On, On, On, On, On, On, On, On, + On, On, On) + CpmmNumber = 8 + CcdId = RED5 + ChannelNumber = 2 + LookupTableType = Stored + LookupTableNumber = 17 + LookupTableMinimum = -9998 + LookupTableMaximum = -9998 + LookupTableMedian = -9998 + LookupTableKValue = -9998 + StimulationLampFlag = (Off, Off, Off) + HeaterControlFlag = (On, On, On, On, On, On, On, On, On, On, On, + On, On, On) + OptBnchFlexureTemperature = 20.0215 + OptBnchMirrorTemperature = 20.1082 + OptBnchFoldFlatTemperature = 20.3683 + OptBnchFpaTemperature = 19.7615 + OptBnchFpeTemperature = 19.5881 + OptBnchLivingRmTemperature = 20.0215 + OptBnchBoxBeamTemperature = 20.1949 + OptBnchCoverTemperature = 19.9348 + FieldStopTemperature = 18.4616 + FpaPositiveYTemperature = 19.5881 + FpaNegativeYTemperature = 19.5881 + FpeTemperature = 17.7686 + PrimaryMirrorMntTemperature = 20.1082 + PrimaryMirrorTemperature = 20.455 + PrimaryMirrorBafTemperature = 3.34153 + MsTrussLeg0ATemperature = 19.8482 + MsTrussLeg0BTemperature = 19.9348 + MsTrussLeg120ATemperature = 19.4148 + MsTrussLeg120BTemperature = 20.1949 + MsTrussLeg240ATemperature = 20.5417 + MsTrussLeg240BTemperature = 20.6284 + BarrelBaffleTemperature = -12.4606 + SunShadeTemperature = -14.001 + SpiderLeg30Temperature = 16.1233 + SpiderLeg120Temperature = -9999 + SpiderLeg240Temperature = -9999 + SecMirrorMtrRngTemperature = 19.7615 + SecMirrorTemperature = 20.8885 + SecMirrorBaffleTemperature = -9.71965 + IeaTemperature = 25.9221 + FocusMotorTemperature = 21.3221 + IePwsBoardTemperature = 17.8502 + CpmmPwsBoardTemperature = 21.4948 + MechTlmBoardTemperature = 35.1464 + InstContBoardTemperature = 34.6875 + DllLockedFlag = (YES, YES) + DllResetCount = 0 + DllLockedOnceFlag = (YES, YES) + DllFrequenceCorrectCount = 4 + ADCTimingSetting = -9999 + Unlutted = TRUE + StitchedChannels = (0, 1) + StitchedProductIds = (PSP_002733_1880_RED5_0, + PSP_002733_1880_RED5_1) + End_Group + + Group = Archive + DataSetId = MRO-M-HIRISE-2-EDR-V1.0 + ProducerId = UA + ObservationId = PSP_002733_1880 + ProductId = PSP_002733_1880_RED5_0 + ProductVersionId = 1.0 + EdrProductCreationTime = 2007-02-25T22:27:25 + RationaleDescription = Null + OrbitNumber = 2733 + SoftwareName = "HiRISE_Observation v2.9.1 (2.43 2006/10/0 + 05:41:12)" + ObservationStartTime = 2007-02-25T09:49:57.729 + ReadoutStartTime = 2007-02-25T09:55:35.298 + TrimLines = 1214 + FelicsCompressionFlag = YES + IdFlightSoftwareName = IE_FSW_V4 + End_Group + + Group = BandBin + Name = Red + Center = 700 + Width = 300 + End_Group + + Group = Kernels + NaifIkCode = -74699 + LeapSecond = $base/kernels/lsk/naif0009.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, + $mro/kernels/ck/mro_sc_psp_070220_070226.bc, + $mro/kernels/fk/mro_v14.tf) + Instrument = $mro/kernels/ik/mro_hirise_v11.ti + SpacecraftClock = $mro/kernels/sclk/MRO_SCLKSCET.00038.65536.tsc + InstrumentPosition = (Table, $mro/kernels/spk/mro_psp2.bsp) + InstrumentAddendum = $mro/kernels/iak/hiriseAddendum006.ti + ShapeModel = Null + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 1 + End_Group + + Group = Radiometry + CalibrationParameters = (OFFSET:/HiRISE/Data/HiCalCoefficients/Matrices/B- + _TDI128_BIN1_0001.cub, + GAIN:/HiRISE/Data/HiCalCoefficients/Matrices/A_TD- + I128_BIN1_0001.cub, + GAIN:/HiRISE/Data/HiCalCoefficients/Matrices/G_TD- + I128_BIN1_0001.cub) + End_Group + + Group = AlphaCube + AlphaSamples = 2048 + AlphaLines = 80000 + AlphaStartingSample = 0.5 + AlphaStartingLine = 0.5 + AlphaEndingSample = 2048.5 + AlphaEndingLine = 2000.5 + BetaSamples = 2048 + BetaLines = 2000 + End_Group + + Group = RadiometricCalibration + Name = hiclean + Version = 1.4.1 + Compatability = "Alan D. clean.pro, version 2/29 sep 2006" + Revision = "$Revision: 1.3 $" + MaskStartingRow = 21 + MaskEndingRow = 38 + BadMaskPixels = 0 + MaskInducedNulls = 0 + DarkStartingColumn = 4 + DarkEndingColumn = 11 + BadDarkPixels = 0 + DarkInducedNulls = 0 + LastGoodLine = 80000 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = "HiRISE Calibration Ancillary" + StartByte = 8454145 + Bytes = 20160 + Records = 168 + ByteOrder = Lsb + + Group = Field + Name = GapFlag + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = LineNumber + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = BufferPixels + Type = Integer + Size = 12 + End_Group + + Group = Field + Name = DarkPixels + Type = Integer + Size = 16 + End_Group +End_Object + +Object = Table + Name = "HiRISE Calibration Image" + StartByte = 8474305 + Bytes = 688128 + Records = 168 + ByteOrder = Lsb + + Group = Field + Name = Calibration + Type = Integer + Size = 1024 + End_Group +End_Object + +Object = Table + Name = "HiRISE Ancillary" + StartByte = 9162433 + Bytes = 9600000 + Records = 80000 + ByteOrder = Lsb + Association = Lines + + Group = Field + Name = GapFlag + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = LineNumber + Type = Integer + Size = 1 + End_Group + + Group = Field + Name = BufferPixels + Type = Integer + Size = 12 + End_Group + + Group = Field + Name = DarkPixels + Type = Integer + Size = 16 + End_Group +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 18762433 + Bytes = 256 + Records = 4 + ByteOrder = Lsb + TimeDependentFrames = (-74000, -74900, 1) + ConstantFrames = (-74690, -74000) + ConstantRotation = (0.9999703083413, 0.0, -0.0077059999872177, + 8.81584889031119e-06, 0.99999934560434, + 0.0011439900269605, 0.0077059949444447, + -0.0011440239949305, 0.99996965396507) + CkTableStartTime = 225669063.02742 + CkTableEndTime = 225669063.20242 + CkTableOriginalSize = 2001 + Description = "Created by spiceinit" + Kernels = ($mro/kernels/ck/mro_sc_psp_070220_070226.bc, + $mro/kernels/fk/mro_v14.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 21962473 + Bytes = 168 + Records = 3 + ByteOrder = Lsb + CacheType = HermiteSpline + Description = "Created by spiceinit" + Kernels = $mro/kernels/spk/mro_psp2.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 24522505 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 225669063.02742 + CkTableEndTime = 225669063.20242 + CkTableOriginalSize = 2 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 190.08669908562 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 27722545 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 30373330 + Bytes = 14212 +End_Object + +Object = OriginalLabel + Name = OriginalLabel + StartByte = 30282577 + Bytes = 30942 +End_Object + +Object = Polygon + Name = Footprint + StartByte = 30369910 + Bytes = 3420 +End_Object +End diff --git a/isis/tests/data/cnetedit/cnet_108pts.pvl b/isis/tests/data/cnetedit/cnet_108pts.pvl new file mode 100644 index 0000000000..a9dfed4a99 --- /dev/null +++ b/isis/tests/data/cnetedit/cnet_108pts.pvl @@ -0,0 +1,3238 @@ +Object = ControlNetwork + NetworkId = NewNetwork + TargetName = Mars + UserName = caustin + Created = Null + LastModified = Null + Description = NewNetwork + Version = 5 + + Object = ControlPoint + PointType = Free + PointId = new0001 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:31 + Sample = 11.002362806422 + Line = 422.04915727097 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:31 + Sample = 1.6628550989635 + Line = 328.45336149322 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0002 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:31 + Sample = 18.215874334214 + Line = 442.29284754422 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:31 + Sample = 8.9231888331417 + Line = 348.63944344774 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0003 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 472.66293186489 + Line = 286.5028408727 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 462.63180582145 + Line = 180.62363048896 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0004 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 475.15468487065 + Line = 306.89233376838 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 465.1316930521 + Line = 200.92276750532 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0005 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 477.53757440886 + Line = 327.46214256434 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 467.5550525596 + Line = 221.38613187076 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0006 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 480.23040562098 + Line = 347.48594461527 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 470.2565958944 + Line = 241.37444692109 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0007 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 215.83286033802 + Line = 386.11449945343 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 205.84205510189 + Line = 280.15987230805 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0008 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 27.52772891931 + Line = 399.43869629082 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 18.020527100954 + Line = 293.55619563515 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0009 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 66.029356641932 + Line = 396.51994976475 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 56.3928897278 + Line = 290.62638349716 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0010 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 104.71454341575 + Line = 393.57978828151 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 94.960468344733 + Line = 287.67316516766 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0011 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 143.55456618838 + Line = 390.80933654525 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 133.69928982239 + Line = 284.88669857134 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0012 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 182.45221586379 + Line = 388.25314334373 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 172.51638102427 + Line = 282.3135842755 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0013 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 218.33345803397 + Line = 406.43165385853 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 208.3637100796 + Line = 300.45509221498 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0014 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 257.10788297379 + Line = 403.92827127584 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 247.09425026747 + Line = 297.93934590851 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0015 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 295.81013351473 + Line = 401.07147464254 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 285.76108663093 + Line = 295.07114770209 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0016 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 334.2409901193 + Line = 398.61327555411 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 324.1817366712 + Line = 292.60034187579 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0017 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 372.38481470749 + Line = 396.21013151637 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 362.33270246833 + Line = 290.18438687577 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0018 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 410.2841487475 + Line = 393.63779838354 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 400.24906215823 + Line = 287.59640437607 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0019 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 447.11346910145 + Line = 392.3965595217 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 437.1398375913 + Line = 286.3359479599 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0020 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 35.314504786338 + Line = 419.37682721863 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 25.789877685118 + Line = 313.45441568757 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0021 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 73.879724569268 + Line = 416.510362235 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 64.230148841699 + Line = 310.5769812793 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0022 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 112.59354536983 + Line = 413.53082913619 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 102.83112890233 + Line = 307.58674074819 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0023 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 151.47688688712 + Line = 410.97993475279 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 141.6258655717 + Line = 305.02378286756 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0024 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 190.36508552431 + Line = 408.17893239589 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 180.43582455199 + Line = 302.21139421271 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0025 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 220.81867088281 + Line = 426.99739584839 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 210.86181154898 + Line = 320.98301723143 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0026 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 259.62261193082 + Line = 424.18225627403 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 249.6163909158 + Line = 318.15668410401 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0027 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 298.30899741076 + Line = 421.42519521595 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 288.27100255896 + Line = 315.38818888577 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0028 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 336.67502325167 + Line = 419.15164091881 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 326.63233739384 + Line = 313.10171234904 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0029 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 374.8088274976 + Line = 416.71043920798 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 364.77378781645 + Line = 310.64804045112 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0030 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 412.7433497737 + Line = 414.01320951525 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 402.72610762286 + Line = 307.93903526759 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0031 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + Ignore = True + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 449.39753091028 + Line = 413.04779127673 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 439.45072383102 + Line = 306.9568034164 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0032 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + Ignore = True + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 43.464883969992 + Line = 439.2597477519 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 33.785100683671 + Line = 333.44372186509 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0033 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 82.031381315359 + Line = 436.43090829286 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 72.267021555104 + Line = 330.56192690454 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0034 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 120.7671638813 + Line = 433.67673785268 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 110.93424436092 + Line = 327.75725841392 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0035 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 159.61329195052 + Line = 431.1786289072 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 149.72990151882 + Line = 325.21286995747 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0036 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 198.45415035333 + Line = 428.54785222778 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 188.53108510233 + Line = 322.54050296699 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0037 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 223.56671055391 + Line = 447.23228271631 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 213.3680193192 + Line = 341.41565776505 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0038 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Ignore = True + Sample = 262.29151761831 + Line = 444.69748447539 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 252.07974106094 + Line = 338.82993376889 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0039 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Ignore = True + Sample = 300.89010791282 + Line = 442.0620807151 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Ignore = True + Sample = 290.68547871004 + Line = 336.1462253802 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0040 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 339.25760065483 + Line = 439.57228386989 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 329.07862766947 + Line = 333.61118699507 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0041 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 377.34966143085 + Line = 437.1164701152 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 367.21318088003 + Line = 331.11187899492 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0042 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 415.17157257786 + Line = 434.56008250241 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 405.09296772439 + Line = 328.51259675658 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0043 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 451.89397453419 + Line = 433.37769193293 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 441.8988274385 + Line = 327.29998051101 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0044 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 13.541454340573 + Line = 461.87473795926 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 3.7137561540906 + Line = 356.38113613293 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0045 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 51.938895574767 + Line = 459.03122322641 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 42.006442017098 + Line = 353.47159461034 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0046 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 90.558527581699 + Line = 456.27310299719 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 80.537235545132 + Line = 350.65073017945 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0047 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 129.35190059662 + Line = 453.78121391638 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 119.26018439067 + Line = 348.10145811183 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0048 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 168.16802368972 + Line = 451.12751290768 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 158.02073803666 + Line = 345.39039327971 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0049 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 206.99014030732 + Line = 448.4386990938 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 196.80364235828 + Line = 342.64586897144 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0050 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 226.33117866633 + Line = 467.58759283332 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 215.89971074881 + Line = 362.00972482935 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0051 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 265.04255741077 + Line = 465.02110268501 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 254.59646415154 + Line = 359.3840500572 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0052 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 303.6479954802 + Line = 462.28151086847 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 293.20268982868 + Line = 356.58540905665 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0053 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 341.99675884552 + Line = 459.81323396253 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 331.57208539356 + Line = 354.0629701884 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0054 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 380.03388251292 + Line = 457.45503614473 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 369.64769313335 + Line = 351.65357406926 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0055 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 417.92282628311 + Line = 454.70389565052 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 407.58769130151 + Line = 348.84939882781 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0056 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 454.63786374006 + Line = 453.49883330126 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 444.38378805588 + Line = 347.60710671977 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0057 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 60.62584221893 + Line = 478.85864591418 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 50.446464870616 + Line = 373.56602044442 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0058 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 99.30081884234 + Line = 476.2538782229 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 89.038905243482 + Line = 370.88698959096 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0059 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 138.07605197639 + Line = 473.63373806196 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 127.74358623113 + Line = 368.2004283557 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0060 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 176.8933393194 + Line = 470.97641350486 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 166.50656130793 + Line = 365.47824912369 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0061 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 382.75999557669 + Line = 477.68493710411 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 372.13679566215 + Line = 372.08901208852 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0062 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 420.52829813638 + Line = 475.15133662178 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 409.95804420569 + Line = 369.49666811078 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0063 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 457.72885192594 + Line = 472.99638403268 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:33 + Sample = 447.23100437209 + Line = 367.28844933244 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0064 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + Ignore = True + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 457.6304846974 + Line = 75.398182723679 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 474.83447903502 + Line = 275.12751002867 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 467.5225551724 + Line = 180.99580115403 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0065 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + Ignore = True + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Ignore = True + Sample = 460.01225255037 + Line = 95.876800782756 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 477.187963359 + Line = 295.70367014835 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 469.89397574436 + Line = 201.56542498155 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0066 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + Ignore = True + Sample = 462.35208428959 + Line = 116.36800076912 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 479.53352230593 + Line = 316.30088843423 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 472.25532228181 + Line = 222.14816684858 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0067 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Ignore = True + Sample = 33.04943477971 + Line = 207.64538731051 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Ignore = True + Sample = 51.932170047058 + Line = 407.05378039341 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 42.658880082357 + Line = 313.39222000341 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0068 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + Ignore = True + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Ignore = True + Sample = 205.19224208483 + Line = 215.86245786587 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Ignore = True + Sample = 223.96005623139 + Line = 415.65437180684 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Ignore = True + Sample = 215.20985155685 + Line = 321.75094064898 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0069 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 243.95950172752 + Line = 213.20782099833 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 262.61831136631 + Line = 413.06490335698 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 254.02897765876 + Line = 319.10606841165 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0070 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 282.60854604844 + Line = 210.59602015523 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 301.12588456368 + Line = 410.51802995416 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 292.71249261284 + Line = 316.50416245431 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0071 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 321.08280074311 + Line = 207.99772219339 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 339.42576541018 + Line = 407.98462619752 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 331.20451888514 + Line = 313.91571346014 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0072 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 1.9318287545343 + Line = 230.65251394295 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 20.71510390822 + Line = 430.09779971251 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 11.405115857796 + Line = 336.47098191308 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0073 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 40.197992724746 + Line = 227.68227481392 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 59.052790658398 + Line = 427.19368883739 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 49.80843138117 + Line = 333.51818027174 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0074 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 78.757251487916 + Line = 224.96602512573 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 97.641116971002 + Line = 424.54430570307 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 88.485503730667 + Line = 330.82014340192 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0075 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 117.41224012231 + Line = 222.00785504853 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 136.30405378312 + Line = 421.65134801753 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 127.24974189508 + Line = 327.87463218332 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0076 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 156.19715775607 + Line = 219.1575052782 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 175.06015908186 + Line = 418.86624970626 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 166.1273508863 + Line = 325.03317358112 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0077 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 207.75060818821 + Line = 236.31923835468 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 226.46286346465 + Line = 436.21338827757 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 217.7516603177 + Line = 342.26911316279 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0078 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 246.50250756643 + Line = 233.71853580313 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 265.10091571913 + Line = 433.67996341343 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 256.55019021969 + Line = 339.68698873763 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0079 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 285.14809915517 + Line = 231.03857862623 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 303.6055342191 + Line = 431.06639750112 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 295.22768092533 + Line = 337.02545730574 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0080 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 323.60491818759 + Line = 228.4488703099 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 341.88795040063 + Line = 428.54310007565 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 333.69790889885 + Line = 334.45447746053 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0081 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 361.7423801317 + Line = 226.10177726401 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 379.8128437515 + Line = 426.26329064209 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 371.82708581589 + Line = 332.1268065637 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0082 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 399.61875568541 + Line = 223.62261082721 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 417.45549129239 + Line = 423.8502381098 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 409.68217002062 + Line = 329.66676251229 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0083 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 437.07471263846 + Line = 221.28466899767 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 454.64731647662 + Line = 421.57876031021 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 447.10042792123 + Line = 327.34107303664 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0084 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 9.2728348419828 + Line = 250.86120472502 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 28.03228422598 + Line = 450.39562482308 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 18.772164358801 + Line = 356.70695331817 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0085 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 47.576831614772 + Line = 247.88912683565 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 66.398015039437 + Line = 447.49348074201 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 57.206855272589 + Line = 353.7544538475 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0086 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 86.128736340207 + Line = 245.03816050386 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 104.97511458817 + Line = 444.71338361445 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 95.872873826211 + Line = 350.92399901593 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0087 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 124.81458927671 + Line = 242.09895644984 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 143.65810104625 + Line = 441.84489934573 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 134.65961115059 + Line = 348.00592061661 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0088 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 163.61149616781 + Line = 239.22804352143 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 182.41742908741 + Line = 439.04475026917 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 173.54075885534 + Line = 345.15658826528 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0089 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 210.28240398663 + Line = 256.95948365094 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 228.95190144135 + Line = 456.92687292921 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 220.28981014413 + Line = 362.91588956689 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0090 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 249.02711018549 + Line = 254.2567648022 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 267.58172263012 + Line = 454.2957319601 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 259.07897306573 + Line = 360.23418990954 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0091 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 287.66706609449 + Line = 251.53246833885 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 306.07706817476 + Line = 451.64271851927 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 297.74734956111 + Line = 357.53157974596 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0092 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 326.10405196827 + Line = 248.95666709406 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 344.33374949004 + Line = 449.13920021898 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 336.19312649703 + Line = 354.97824670457 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0093 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 364.22874451962 + Line = 246.58401748283 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 382.24191641484 + Line = 446.83967090939 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 374.30603198036 + Line = 352.6288151688 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0094 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 402.08034166792 + Line = 244.1081340044 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 419.85454454593 + Line = 444.43667258752 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 412.13205666513 + Line = 350.17670485629 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0095 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 439.64155090357 + Line = 241.51723607622 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 457.15598607744 + Line = 441.91838180779 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 449.65450271612 + Line = 347.61016925278 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0096 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 16.706313553447 + Line = 270.85785446436 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 35.495469601723 + Line = 470.48373747509 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 26.244980889334 + Line = 376.71994832416 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0097 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 55.096100211402 + Line = 268.00710272558 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 73.926983952242 + Line = 467.69892383747 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 64.760076105261 + Line = 373.88649650395 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0098 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 93.653900937427 + Line = 265.0532822766 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 112.49920617427 + Line = 464.81148761724 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 103.43078817918 + Line = 370.95055781871 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0099 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 132.37019878824 + Line = 262.13677620159 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 151.19663836386 + Line = 461.96248715372 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 142.24425262511 + Line = 368.05273651857 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0100 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 171.19785333443 + Line = 259.63363163384 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 189.95691061088 + Line = 459.5295415342 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 181.14492956916 + Line = 365.56950123898 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0101 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 212.81424378753 + Line = 277.47574436131 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 231.50551171771 + Line = 477.51787903431 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 222.82226310755 + Line = 383.43333766726 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0102 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 251.55729692049 + Line = 274.70165880063 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 270.1263973688 + Line = 474.8112660352 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 261.61752210309 + Line = 380.67741048979 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0103 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 290.17957584383 + Line = 272.02267182857 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 308.59231734557 + Line = 472.20099900447 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 300.27020286304 + Line = 378.01742249825 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0104 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 328.58063576356 + Line = 269.51561607631 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 346.80111690207 + Line = 469.76413220215 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 338.67746829452 + Line = 375.53030167793 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0105 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 366.70525962922 + Line = 267.07668425596 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 384.70306691995 + Line = 467.39641276823 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 376.79063695802 + Line = 373.11196939834 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0106 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 404.61798154484 + Line = 264.41868722101 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 422.37441658546 + Line = 464.80965274513 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 414.68055033674 + Line = 370.47509653686 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0107 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 441.66228137884 + Line = 262.78248139854 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 459.11784379988 + Line = 463.24871167321 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 451.66575491637 + Line = 368.86094398859 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = new0108 + ChooserName = Unknown + DateTime = 2012-05-03T12:58:49 + + Group = ControlMeasure + SerialNumber = MGS/718369703:160/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 178.94746933022 + Line = 279.83515345393 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MGS/688540926:0/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 197.72240205749 + Line = 479.81896983674 + End_Group + + Group = ControlMeasure + SerialNumber = MGS/691204200:96/MOC-WA/RED + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-12-22T09:24:34 + Sample = 188.89803974946 + Line = 385.7773340193 + End_Group + End_Object +End_Object +End diff --git a/isis/tests/data/cnetedit/cnet_11pts.pvl b/isis/tests/data/cnetedit/cnet_11pts.pvl new file mode 100644 index 0000000000..da6e3473b1 --- /dev/null +++ b/isis/tests/data/cnetedit/cnet_11pts.pvl @@ -0,0 +1,344 @@ +Object = ControlNetwork + NetworkId = pointregTest + TargetName = Mars + UserName = jwalldren + Created = Null + LastModified = Null + Description = pointregAppTest + Version = 5 + + Object = ControlPoint + PointType = Free + PointId = pointregTest0001 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2024.9426496396 + Line = 1002.2851420811 + SampleResidual = 10.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 24.231028472272 + Line = 1003.4315948486 + AprioriSample = 25.0 + AprioriLine = 1000.0 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0002 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + Ignore = True + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2037.6533300862 + Line = 1184.6426576887 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 36.997759287231 + Line = 1185.8466715131 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0003 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2003.8286760498 + Line = 1361.3694076538 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 3.217924722872 + Line = 1362.6534620013 + SampleResidual = 0.0 + LineResidual = 6.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0004 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + Ignore = True + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2016.6480691753 + Line = 1543.6421143668 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 16.046408804032 + Line = 1545.0106370108 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0005 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2029.5446002794 + Line = 1725.8194536482 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 28.925844700071 + Line = 1727.3395423889 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0006 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2042.5256884771 + Line = 1907.9279921395 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 41.865298408191 + Line = 1909.6773033142 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0007 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2012.201404177 + Line = 819.94669995989 + SampleResidual = 11.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 11.40926078542 + Line = 821.0601147243 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0008 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2045.9696349664 + Line = 643.09835651943 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 45.063543577348 + Line = 644.22982297625 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0009 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2033.1477595262 + Line = 460.74015971592 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 32.112688695736 + Line = 461.86277062552 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0010 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2020.272346886 + Line = 278.31520571027 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 19.083908218492 + Line = 279.54408318656 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = pointregTest0011 + ChooserName = cnetbin2pvl + DateTime = 2023-11-15T08:30:46 + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED4/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 2007.3360059905 + Line = 95.954965318952 + SampleResidual = 0.0 + LineResidual = 0.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = MRO/HIRISE/856864216:41044/RED5/2 + MeasureType = Candidate + ChooserName = "Application autoseed" + DateTime = 2008-02-19T14:31:39 + Sample = 5.9696691241626 + Line = 97.276485443115 + SampleResidual = 0.0 + LineResidual = 0.0 + End_Group + End_Object +End_Object +End diff --git a/isis/tests/data/cnetedit/cnet_35pts.pvl b/isis/tests/data/cnetedit/cnet_35pts.pvl new file mode 100644 index 0000000000..c0556f3564 --- /dev/null +++ b/isis/tests/data/cnetedit/cnet_35pts.pvl @@ -0,0 +1,1623 @@ +Object = ControlNetwork + NetworkId = I24827003RDR_BOUNDARY_NET + TargetName = Mars + UserName = lweller + Created = 2011-12-15T23:19:37 + LastModified = 2011-12-15T23:19:37 + Description = "I24827003RDR IMAGE BOUNDARY NETWORK" + Version = 5 + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_UL + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 27.607059317834 + Line = 18.295111585227 + AprioriSample = 27.592145368644 + AprioriLine = 18.277370871022 + MinimumPixelZScore = -9.1101292766656 + MaximumPixelZScore = 7.1550838917398 + GoodnessOfFit = 0.42491860555961 + SubPixelCorrelation = 0.42491860555961 + Obsolete_Eccentricity = 0.82500889401041 + WholePixelCorrelation = 0.48094671315067 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 142.0 + Line = 5710.0 + AprioriSample = 137.85157104559 + AprioriLine = 5723.5583837946 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 224.84594511441 + Line = 1114.556157076 + AprioriSample = 224.86109569625 + AprioriLine = 1114.5366784126 + MinimumPixelZScore = -9.1101292766656 + MaximumPixelZScore = 7.1550838917398 + GoodnessOfFit = 0.6301057592872 + SubPixelCorrelation = 0.6301057592872 + Obsolete_Eccentricity = 0.85464446637656 + WholePixelCorrelation = 0.91990818731499 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 241.70373879742 + Line = 4170.1757137588 + AprioriSample = 241.66704417356 + AprioriLine = 4170.1768448015 + MinimumPixelZScore = -9.1101292766656 + MaximumPixelZScore = 7.1550838917398 + GoodnessOfFit = 0.52130053192069 + SubPixelCorrelation = 0.52130053192069 + Obsolete_Eccentricity = 0.87083916894004 + WholePixelCorrelation = 0.68332380944365 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_UR + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 126.11723415114 + Line = 14.624031718257 + AprioriSample = 126.13262109331 + AprioriLine = 14.60864867694 + MinimumPixelZScore = -7.7826442877901 + MaximumPixelZScore = 6.4531771874365 + GoodnessOfFit = 0.54141035408281 + SubPixelCorrelation = 0.54141035408281 + Obsolete_Eccentricity = 0.80166834482906 + WholePixelCorrelation = 0.59126689617359 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 167.0 + Line = 4129.0 + AprioriSample = 185.89330945024 + AprioriLine = 4149.8781759925 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_LL + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 15.994142166447 + Line = 5351.59876634 + AprioriSample = 15.988352444663 + AprioriLine = 5351.6271443448 + MinimumPixelZScore = -1.3323758785145 + MaximumPixelZScore = 1.7088719658458 + GoodnessOfFit = 0.97152986956068 + SubPixelCorrelation = 0.97152986956068 + Obsolete_Eccentricity = 0.84992032708551 + WholePixelCorrelation = 0.97231368866292 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/823680993.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 276.0 + Line = 10691.0 + AprioriSample = 294.45457233458 + AprioriLine = 10704.104037218 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_CTR + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 72.351376549012 + Line = 2683.7835945571 + AprioriSample = 72.31156993241 + AprioriLine = 2683.7871073413 + MinimumPixelZScore = -10.556951321328 + MaximumPixelZScore = 7.6843165392047 + GoodnessOfFit = 0.42694248853572 + SubPixelCorrelation = 0.42694248853572 + Obsolete_Eccentricity = 0.86764337082849 + WholePixelCorrelation = 0.47513217291136 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 62.0 + Line = 9450.0 + AprioriSample = 78.035822649479 + AprioriLine = 9466.8664683336 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_1 + ChooserName = cnetadd + DateTime = 2012-01-13T13:06:19 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 48.760708608846 + Line = 34.687788591 + AprioriSample = 48.783779645185 + AprioriLine = 34.690686342128 + MinimumPixelZScore = -10.336933423527 + MaximumPixelZScore = 8.3466298590249 + GoodnessOfFit = 0.42219888501096 + SubPixelCorrelation = 0.42219888501096 + Obsolete_Eccentricity = 0.81654602547138 + WholePixelCorrelation = 0.4842514894252 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 185.0 + Line = 5743.0 + AprioriSample = 192.35430957356 + AprioriLine = 5723.6616154452 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 268.02675159169 + Line = 1147.6104906502 + AprioriSample = 268.09033141866 + AprioriLine = 1147.56287184 + MinimumPixelZScore = -10.336933423527 + MaximumPixelZScore = 8.3466298590249 + GoodnessOfFit = 0.59150804215855 + SubPixelCorrelation = 0.59150804215855 + Obsolete_Eccentricity = 0.87243685463714 + WholePixelCorrelation = 0.90247447994431 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 284.81369462788 + Line = 4203.1792327291 + AprioriSample = 284.85045436259 + AprioriLine = 4203.2511600821 + MinimumPixelZScore = -10.336933423527 + MaximumPixelZScore = 8.3466298590249 + GoodnessOfFit = 0.47601397505042 + SubPixelCorrelation = 0.47601397505042 + Obsolete_Eccentricity = 0.89216340544699 + WholePixelCorrelation = 0.67632719937417 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_2 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 64.553532057187 + Line = 16.16468261595 + AprioriSample = 64.572486285992 + AprioriLine = 16.159319580388 + MinimumPixelZScore = -10.851025717118 + MaximumPixelZScore = 9.0681589770554 + GoodnessOfFit = 0.36725373651513 + SubPixelCorrelation = 0.36725373651513 + Obsolete_Eccentricity = 0.82699300047967 + WholePixelCorrelation = 0.42843510599361 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 42.01598881521 + Line = 4131.262421516 + AprioriSample = 42.019306132363 + AprioriLine = 4131.2821435604 + MinimumPixelZScore = -10.851025717118 + MaximumPixelZScore = 9.0681589770554 + GoodnessOfFit = 0.58620780317928 + SubPixelCorrelation = 0.58620780317928 + Obsolete_Eccentricity = 0.85025939150097 + WholePixelCorrelation = 0.85996682715537 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 217.0 + Line = 5706.0 + AprioriSample = 246.84321887463 + AprioriLine = 5723.765018548 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_3 + ChooserName = cnetadd + DateTime = 2012-01-13T13:06:19 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 121.11506062968 + Line = 31.572854327236 + AprioriSample = 121.14548884404 + AprioriLine = 31.572969450255 + MinimumPixelZScore = -8.5291500072502 + MaximumPixelZScore = 7.7800103958966 + GoodnessOfFit = 0.50147560129106 + SubPixelCorrelation = 0.50147560129106 + Obsolete_Eccentricity = 0.82257001244825 + WholePixelCorrelation = 0.54888811579928 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 157.0 + Line = 4163.0 + AprioriSample = 126.98178618374 + AprioriLine = 4149.931145305 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_4 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 138.20448769735 + Line = 228.14972149796 + AprioriSample = 138.2463996157 + AprioriLine = 228.15056835088 + MinimumPixelZScore = -8.3439788918745 + MaximumPixelZScore = 6.8503359515919 + GoodnessOfFit = 0.58524107005789 + SubPixelCorrelation = 0.58524107005789 + Obsolete_Eccentricity = 0.79963813984092 + WholePixelCorrelation = 0.61793743687586 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 192.0 + Line = 4555.0 + AprioriSample = 186.03957998842 + AprioriLine = 4558.6289790526 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_5 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 149.20509521588 + Line = 423.93494885646 + AprioriSample = 149.18783166409 + AprioriLine = 423.90617198328 + MinimumPixelZScore = -6.9567313793804 + MaximumPixelZScore = 7.116669122997 + GoodnessOfFit = 0.58378259591105 + SubPixelCorrelation = 0.58378259591105 + Obsolete_Eccentricity = 0.81140407536592 + WholePixelCorrelation = 0.62604756787944 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 214.0 + Line = 4945.0 + AprioriSample = 186.32462775985 + AprioriLine = 4967.2377534825 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_6 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 128.28737710591 + Line = 651.23659834539 + AprioriSample = 128.29832945259 + AprioriLine = 651.26409956921 + MinimumPixelZScore = -6.0616802552658 + MaximumPixelZScore = 5.8974339078448 + GoodnessOfFit = 0.46624774328617 + SubPixelCorrelation = 0.46624774328617 + Obsolete_Eccentricity = 0.66978571811643 + WholePixelCorrelation = 0.50483735035139 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 173.0 + Line = 5399.0 + AprioriSample = 186.47612972153 + AprioriLine = 5375.9772827805 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_8 + ChooserName = cnetadd + DateTime = 2012-01-13T13:25:48 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/748799078.000 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 28.513330924664 + Line = 15802.82320805 + AprioriSample = 28.577348166348 + AprioriLine = 15802.74722498 + MinimumPixelZScore = -3.3013168477769 + MaximumPixelZScore = 2.2949036325521 + GoodnessOfFit = 0.71147478712267 + SubPixelCorrelation = 0.71147478712267 + Obsolete_Eccentricity = 0.93900106979889 + WholePixelCorrelation = 0.71074079991412 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 197.0 + Line = 6217.0 + AprioriSample = 187.20197125496 + AprioriLine = 6193.3583087996 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_9 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 132.43324628739 + Line = 1244.9963043389 + AprioriSample = 132.41230089305 + AprioriLine = 1244.9968964388 + MinimumPixelZScore = -4.3267682575543 + MaximumPixelZScore = 3.3036547408159 + GoodnessOfFit = 0.64094554586329 + SubPixelCorrelation = 0.64094554586329 + Obsolete_Eccentricity = 0.69326613917787 + WholePixelCorrelation = 0.70413968240039 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/748799078.000 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 139.20929458768 + Line = 15461.410830143 + AprioriSample = 139.07279851894 + AprioriLine = 15461.411736985 + MinimumPixelZScore = -4.3267682575543 + MaximumPixelZScore = 3.3036547408159 + GoodnessOfFit = 0.57147470389177 + SubPixelCorrelation = 0.57147470389177 + Obsolete_Eccentricity = 0.46252692121887 + WholePixelCorrelation = 0.63489389099904 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 182.0 + Line = 6582.0 + AprioriSample = 187.43332157572 + AprioriLine = 6601.9213229651 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_10 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 119.0 + Line = 1437.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/748799078.000 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 273.65933086114 + Line = 15088.126010294 + AprioriSample = 273.79775945033 + AprioriLine = 15088.279072135 + MinimumPixelZScore = -4.5982076153028 + MaximumPixelZScore = 5.1547250339538 + GoodnessOfFit = 0.46437443646356 + SubPixelCorrelation = 0.46437443646356 + Obsolete_Eccentricity = 0.5755806348777 + WholePixelCorrelation = 0.47471560826242 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 155.87633505028 + Line = 6965.8249656384 + AprioriSample = 155.75079341732 + AprioriLine = 6965.8015269146 + MinimumPixelZScore = -4.5982076153028 + MaximumPixelZScore = 5.1547250339538 + GoodnessOfFit = 0.6221840844042 + SubPixelCorrelation = 0.6221840844042 + Obsolete_Eccentricity = 0.78095310139119 + WholePixelCorrelation = 0.67240071516507 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_11 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 118.0 + Line = 1634.0 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 153.15891256983 + Line = 7357.6539686369 + AprioriSample = 153.22494967358 + AprioriLine = 7357.6402737744 + MinimumPixelZScore = -8.8742551139388 + MaximumPixelZScore = 4.4648645875177 + GoodnessOfFit = 0.43246786725171 + SubPixelCorrelation = 0.43246786725171 + Obsolete_Eccentricity = 0.84442625710954 + WholePixelCorrelation = 0.57817462187924 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_12 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 121.49478999227 + Line = 1856.731446573 + AprioriSample = 121.50516007892 + AprioriLine = 1856.7635557292 + MinimumPixelZScore = -6.8138683213418 + MaximumPixelZScore = 2.9308636161718 + GoodnessOfFit = 0.64478667558312 + SubPixelCorrelation = 0.64478667558312 + Obsolete_Eccentricity = 0.72771562095133 + WholePixelCorrelation = 0.66352150232528 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 161.0 + Line = 7802.0 + AprioriSample = 188.35852324024 + AprioriLine = 7828.0151912856 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_13 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 137.57913021604 + Line = 2075.8951198701 + AprioriSample = 137.58325445598 + AprioriLine = 2075.9164372763 + MinimumPixelZScore = -5.1298466964338 + MaximumPixelZScore = 3.768980062869 + GoodnessOfFit = 0.63467767714999 + SubPixelCorrelation = 0.63467767714999 + Obsolete_Eccentricity = 0.74702153978772 + WholePixelCorrelation = 0.66651958106393 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 194.0 + Line = 8239.0 + AprioriSample = 188.7116242464 + AprioriLine = 8236.611878563 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_14 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 143.29125188489 + Line = 2295.6657077538 + AprioriSample = 143.27818713457 + AprioriLine = 2295.7018251456 + MinimumPixelZScore = -2.8495963378738 + MaximumPixelZScore = 4.2726177946745 + GoodnessOfFit = 0.50555393181678 + SubPixelCorrelation = 0.50555393181678 + Obsolete_Eccentricity = 0.84376716040979 + WholePixelCorrelation = 0.52159173578701 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 207.0 + Line = 8675.0 + AprioriSample = 189.16494375722 + AprioriLine = 8645.4100113685 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_15 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 145.30808018025 + Line = 2477.1515954142 + AprioriSample = 145.33233846913 + AprioriLine = 2477.1921753136 + MinimumPixelZScore = -3.5474697309863 + MaximumPixelZScore = 2.6587565865915 + GoodnessOfFit = 0.74011087203503 + SubPixelCorrelation = 0.74011087203503 + Obsolete_Eccentricity = 0.64299738534369 + WholePixelCorrelation = 0.74945020462948 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 211.0 + Line = 9039.0 + AprioriSample = 189.75749469492 + AprioriLine = 9054.1180252552 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_16 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 140.38785971346 + Line = 2681.7415355665 + AprioriSample = 140.40848396701 + AprioriLine = 2681.7274129245 + MinimumPixelZScore = -3.1758333116921 + MaximumPixelZScore = 9.0338725240029 + GoodnessOfFit = 0.64015829348973 + SubPixelCorrelation = 0.64015829348973 + Obsolete_Eccentricity = 0.83201034936892 + WholePixelCorrelation = 0.66279412202517 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 200.0 + Line = 9446.0 + AprioriSample = 189.74898445243 + AprioriLine = 9462.737163363 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_17 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 124.74745142602 + Line = 2886.7706306145 + AprioriSample = 124.71763854068 + AprioriLine = 2886.7534192259 + MinimumPixelZScore = -5.0257793273488 + MaximumPixelZScore = 4.5136102504828 + GoodnessOfFit = 0.64224423008729 + SubPixelCorrelation = 0.64224423008729 + Obsolete_Eccentricity = 0.88553794865542 + WholePixelCorrelation = 0.6693638769383 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 169.0 + Line = 9855.0 + AprioriSample = 190.17574850163 + AprioriLine = 9871.5220697322 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_19 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 133.32938592698 + Line = 3304.5102172403 + AprioriSample = 133.33076800753 + AprioriLine = 3304.5111192353 + MinimumPixelZScore = -3.5877838148283 + MaximumPixelZScore = 5.9675648071378 + GoodnessOfFit = 0.57259590692606 + SubPixelCorrelation = 0.57259590692606 + Obsolete_Eccentricity = 0.61612921400087 + WholePixelCorrelation = 0.59797982339977 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/760206015.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 188.0 + Line = 10688.0 + AprioriSample = 191.38234151276 + AprioriLine = 10688.903800361 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_32 + ChooserName = cnetadd + DateTime = 2012-01-13T13:25:48 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 131.10154251818 + Line = 6114.7427251932 + AprioriSample = 131.08464580002 + AprioriLine = 6114.72255253 + MinimumPixelZScore = -6.7883347305594 + MaximumPixelZScore = 3.0268974724574 + GoodnessOfFit = 0.46612674246283 + SubPixelCorrelation = 0.46612674246283 + Obsolete_Eccentricity = 0.92407264183803 + WholePixelCorrelation = 0.55739606549034 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 213.1699011323 + Line = 1518.9151968876 + AprioriSample = 213.26905955464 + AprioriLine = 1518.9193152579 + MinimumPixelZScore = -6.7883347305594 + MaximumPixelZScore = 3.0268974724574 + GoodnessOfFit = 0.41028456857734 + SubPixelCorrelation = 0.41028456857734 + Obsolete_Eccentricity = 0.91737961021451 + WholePixelCorrelation = 0.49561038667554 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 231.0 + Line = 4574.0 + AprioriSample = 235.04493503215 + AprioriLine = 4589.2309851386 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_33 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 32.243849071197 + Line = 443.99293787456 + AprioriSample = 32.267286312846 + AprioriLine = 443.93790066253 + MinimumPixelZScore = -9.4814064508761 + MaximumPixelZScore = 7.613279128717 + GoodnessOfFit = 0.35909430591995 + SubPixelCorrelation = 0.35909430591995 + Obsolete_Eccentricity = 0.86088783993688 + WholePixelCorrelation = 0.42439889849862 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 150.0 + Line = 6561.0 + AprioriSample = 136.08250364324 + AprioriLine = 6542.0592380917 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 231.61495841089 + Line = 1964.6495319857 + AprioriSample = 231.58016101587 + AprioriLine = 1964.5656483556 + MinimumPixelZScore = -9.4814064508761 + MaximumPixelZScore = 7.613279128717 + GoodnessOfFit = 0.63763367292373 + SubPixelCorrelation = 0.63763367292373 + Obsolete_Eccentricity = 0.88928007456266 + WholePixelCorrelation = 0.9083985074489 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 248.64525826167 + Line = 5019.6082778839 + AprioriSample = 248.66537068953 + AprioriLine = 5019.6509310444 + MinimumPixelZScore = -9.4814064508761 + MaximumPixelZScore = 7.613279128717 + GoodnessOfFit = 0.47134697831144 + SubPixelCorrelation = 0.47134697831144 + Obsolete_Eccentricity = 0.90697269892977 + WholePixelCorrelation = 0.67790447057524 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_34 + ChooserName = cnetadd + DateTime = 2012-01-13T13:06:19 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 39.377323532456 + Line = 644.45059392332 + AprioriSample = 39.422550221501 + AprioriLine = 644.48255376688 + MinimumPixelZScore = -3.6303773877818 + MaximumPixelZScore = 3.9449657352508 + GoodnessOfFit = 0.68219867118992 + SubPixelCorrelation = 0.68219867118992 + Obsolete_Eccentricity = 0.6687629032313 + WholePixelCorrelation = 0.69541576692436 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 165.0 + Line = 6962.0 + AprioriSample = 135.40596122852 + AprioriLine = 6951.3519736314 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 245.82294568014 + Line = 2365.749168986 + AprioriSample = 245.80677488643 + AprioriLine = 2365.659647922 + MinimumPixelZScore = -3.6303773877818 + MaximumPixelZScore = 3.9449657352508 + GoodnessOfFit = 0.88500611615228 + SubPixelCorrelation = 0.88500611615228 + Obsolete_Eccentricity = 0.79641849988017 + WholePixelCorrelation = 0.93879938608019 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 262.99285894944 + Line = 5419.5752950317 + AprioriSample = 262.93741513321 + AprioriLine = 5419.5000790279 + MinimumPixelZScore = -3.6303773877818 + MaximumPixelZScore = 3.9449657352508 + GoodnessOfFit = 0.8384872040154 + SubPixelCorrelation = 0.8384872040154 + Obsolete_Eccentricity = 0.80938385565388 + WholePixelCorrelation = 0.88811262489038 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_35 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 38.84105669372 + Line = 832.10752901602 + AprioriSample = 38.80553051742 + AprioriLine = 832.12557774503 + MinimumPixelZScore = -3.8007083634248 + MaximumPixelZScore = 4.4757735324342 + GoodnessOfFit = 0.42116724718091 + SubPixelCorrelation = 0.42116724718091 + Obsolete_Eccentricity = 0.73339213911551 + WholePixelCorrelation = 0.4230891360784 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/748799078.000 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 122.65301115881 + Line = 16293.50679139 + AprioriSample = 122.78458208301 + AprioriLine = 16293.419624892 + MinimumPixelZScore = -3.8007083634248 + MaximumPixelZScore = 4.4757735324342 + GoodnessOfFit = 0.44965842923952 + SubPixelCorrelation = 0.44965842923952 + Obsolete_Eccentricity = 0.84701026248297 + WholePixelCorrelation = 0.45019255138853 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 150.0 + Line = 7353.0 + AprioriSample = 134.63818771615 + AprioriLine = 7360.5513465387 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 230.33072524429 + Line = 2756.0791608266 + AprioriSample = 230.33084176063 + AprioriLine = 2756.1290924305 + MinimumPixelZScore = -3.8007083634248 + MaximumPixelZScore = 4.4757735324342 + GoodnessOfFit = 0.90144944908857 + SubPixelCorrelation = 0.90144944908857 + Obsolete_Eccentricity = 0.82298722113186 + WholePixelCorrelation = 0.96435572021431 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 248.02226348435 + Line = 5809.3611366058 + AprioriSample = 248.02655270592 + AprioriLine = 5809.4447753716 + MinimumPixelZScore = -3.8007083634248 + MaximumPixelZScore = 4.4757735324342 + GoodnessOfFit = 0.71300187736795 + SubPixelCorrelation = 0.71300187736795 + Obsolete_Eccentricity = 0.8291423602584 + WholePixelCorrelation = 0.76584458449782 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_36 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 19.767099267132 + Line = 1053.224776834 + AprioriSample = 19.768653236342 + AprioriLine = 1053.2080015315 + MinimumPixelZScore = -2.0483817202699 + MaximumPixelZScore = 2.8640554045295 + GoodnessOfFit = 0.58115488237753 + SubPixelCorrelation = 0.58115488237753 + Obsolete_Eccentricity = 0.85917790473711 + WholePixelCorrelation = 0.5848321471167 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/748799078.000 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 291.4370894032 + Line = 15864.748037614 + AprioriSample = 291.36469422798 + AprioriLine = 15864.232672573 + MinimumPixelZScore = -2.0483817202699 + MaximumPixelZScore = 2.8640554045295 + GoodnessOfFit = 0.58326123746324 + SubPixelCorrelation = 0.58326123746324 + Obsolete_Eccentricity = 0.90296752695405 + WholePixelCorrelation = 0.58348490860222 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 124.0 + Line = 7777.0 + AprioriSample = 133.54370444799 + AprioriLine = 7769.8770322264 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 203.98302895363 + Line = 3179.4605858777 + AprioriSample = 203.85450286355 + AprioriLine = 3179.5000595293 + MinimumPixelZScore = -2.0483817202699 + MaximumPixelZScore = 2.8640554045295 + GoodnessOfFit = 0.97240168667426 + SubPixelCorrelation = 0.97240168667426 + Obsolete_Eccentricity = 0.85995206536045 + WholePixelCorrelation = 0.98978024760144 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 220.86690968465 + Line = 6234.9839367112 + AprioriSample = 220.81710118731 + AprioriLine = 6234.7801259019 + MinimumPixelZScore = -2.0483817202699 + MaximumPixelZScore = 2.8640554045295 + GoodnessOfFit = 0.90014960228514 + SubPixelCorrelation = 0.90014960228514 + Obsolete_Eccentricity = 0.89695661349753 + WholePixelCorrelation = 0.91793725667105 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_37 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 36.888733189199 + Line = 1242.731084961 + AprioriSample = 36.911483608247 + AprioriLine = 1242.6935558131 + MinimumPixelZScore = -3.5448692768999 + MaximumPixelZScore = 3.21268016751 + GoodnessOfFit = 0.59407851965547 + SubPixelCorrelation = 0.59407851965547 + Obsolete_Eccentricity = 0.74709296406025 + WholePixelCorrelation = 0.60911835276394 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 157.0 + Line = 8156.0 + AprioriSample = 132.61992449207 + AprioriLine = 8178.9207494154 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/766864399.204 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 236.2196163681 + Line = 3558.0866737144 + AprioriSample = 236.22665154064 + AprioriLine = 3558.2674905463 + MinimumPixelZScore = -3.5448692768999 + MaximumPixelZScore = 3.21268016751 + GoodnessOfFit = 0.92551012715239 + SubPixelCorrelation = 0.92551012715239 + Obsolete_Eccentricity = 0.79541873154535 + WholePixelCorrelation = 0.96799250418854 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 253.44978676116 + Line = 6612.4380581812 + AprioriSample = 253.5215797661 + AprioriLine = 6612.5086541373 + MinimumPixelZScore = -3.5448692768999 + MaximumPixelZScore = 3.21268016751 + GoodnessOfFit = 0.81024350233636 + SubPixelCorrelation = 0.81024350233636 + Obsolete_Eccentricity = 0.83198975240015 + WholePixelCorrelation = 0.85543090385472 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_38 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 34.966885270204 + Line = 1445.2306971316 + AprioriSample = 34.976625619327 + AprioriLine = 1445.2507961096 + MinimumPixelZScore = -2.7649404184731 + MaximumPixelZScore = 3.885430669618 + GoodnessOfFit = 0.50123049691391 + SubPixelCorrelation = 0.50123049691391 + Obsolete_Eccentricity = 0.71542230034353 + WholePixelCorrelation = 0.52019516111106 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 152.0 + Line = 8559.0 + AprioriSample = 131.66372638651 + AprioriLine = 8588.1443315449 + Reference = True + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/860700556.051 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 248.54298985524 + Line = 7015.0925938841 + AprioriSample = 248.47477041243 + AprioriLine = 7015.0708018329 + MinimumPixelZScore = -2.7649404184731 + MaximumPixelZScore = 3.885430669618 + GoodnessOfFit = 0.57404993830787 + SubPixelCorrelation = 0.57404993830787 + Obsolete_Eccentricity = 0.79975823900933 + WholePixelCorrelation = 0.61126341945065 + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_39 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 21.124305682401 + Line = 1660.7015570648 + AprioriSample = 21.244027873838 + AprioriLine = 1660.6652772725 + MinimumPixelZScore = -9.91464328244 + MaximumPixelZScore = 6.6095255951013 + GoodnessOfFit = 0.40060655379026 + SubPixelCorrelation = 0.40060655379026 + Obsolete_Eccentricity = 0.8842462315449 + WholePixelCorrelation = 0.42777155677984 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 122.0 + Line = 8990.0 + AprioriSample = 130.84304170727 + AprioriLine = 8997.4098805041 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_41 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 39.651442821199 + Line = 2081.9946567966 + AprioriSample = 39.640958585734 + AprioriLine = 2081.9963499484 + MinimumPixelZScore = -2.0151952076585 + MaximumPixelZScore = 1.89602994523 + GoodnessOfFit = 0.91233424417264 + SubPixelCorrelation = 0.91233424417264 + Obsolete_Eccentricity = 0.8685408387441 + WholePixelCorrelation = 0.91685736046086 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 158.0 + Line = 9831.0 + AprioriSample = 128.74374032515 + AprioriLine = 9815.6199810588 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_43 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 40.331922777574 + Line = 2498.4634598633 + AprioriSample = 40.342396523112 + AprioriLine = 2498.4688726782 + MinimumPixelZScore = -2.1929700186508 + MaximumPixelZScore = 2.6406477049999 + GoodnessOfFit = 0.87903042477486 + SubPixelCorrelation = 0.87903042477486 + Obsolete_Eccentricity = 0.80945067719471 + WholePixelCorrelation = 0.88307243605489 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/764644820.000 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 158.0 + Line = 10661.0 + AprioriSample = 126.82388485966 + AprioriLine = 10634.051423648 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_50 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 14.277915476186 + Line = 3935.2833714183 + AprioriSample = 14.234425279049 + AprioriLine = 3935.2313000495 + MinimumPixelZScore = -3.2207280824112 + MaximumPixelZScore = 2.179464511159 + GoodnessOfFit = 0.61079317083437 + SubPixelCorrelation = 0.61079317083437 + Obsolete_Eccentricity = 0.83055975470962 + WholePixelCorrelation = 0.621385909313 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/823680993.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 296.0 + Line = 7863.0 + AprioriSample = 317.16905352284 + AprioriLine = 7832.2439273096 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_51 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 11.30320020209 + Line = 4130.0913785706 + AprioriSample = 11.27822009864 + AprioriLine = 4130.0656229356 + MinimumPixelZScore = -5.5551124504224 + MaximumPixelZScore = 5.3507909286785 + GoodnessOfFit = 0.43949327976759 + SubPixelCorrelation = 0.43949327976759 + Obsolete_Eccentricity = 0.76159002924015 + WholePixelCorrelation = 0.46446010837209 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/823680993.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 286.0 + Line = 8252.0 + AprioriSample = 314.07066277501 + AprioriLine = 8241.2675814639 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_53 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 30.377263509207 + Line = 4535.7660808899 + AprioriSample = 30.440341462824 + AprioriLine = 4535.748993877 + MinimumPixelZScore = -3.7311603048292 + MaximumPixelZScore = 2.4776325037694 + GoodnessOfFit = 0.61516820087654 + SubPixelCorrelation = 0.61516820087654 + Obsolete_Eccentricity = 0.74206145332326 + WholePixelCorrelation = 0.61756685189949 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/823680993.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 297.0 + Line = 9048.0 + AprioriSample = 307.37707389729 + AprioriLine = 9059.4587520006 + Reference = True + End_Group + End_Object + + Object = ControlPoint + PointType = Free + PointId = I24827003RDR_bndry_56 + ChooserName = cnetadd + DateTime = 2011-12-15T23:20:27 + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/869400711.102 + MeasureType = RegisteredSubPixel + ChooserName = pointreg + DateTime = 2012-01-13T13:24:49 + Sample = 28.435531108092 + Line = 5157.421973579 + AprioriSample = 28.433104417652 + AprioriLine = 5157.4175236742 + MinimumPixelZScore = -2.608895713487 + MaximumPixelZScore = 3.0009659960998 + GoodnessOfFit = 0.80009655417522 + SubPixelCorrelation = 0.80009655417522 + Obsolete_Eccentricity = 0.91052297013589 + WholePixelCorrelation = 0.80523427372119 + End_Group + + Group = ControlMeasure + SerialNumber = Odyssey/THEMIS_IR/823680993.230 + MeasureType = Candidate + ChooserName = cnetref + DateTime = 2011-12-15T23:20:28 + Sample = 305.0 + Line = 10302.0 + AprioriSample = 297.73233806667 + AprioriLine = 10286.943394023 + Reference = True + End_Group + End_Object +End_Object +End diff --git a/isis/tests/data/cnetedit/e0902065.cal.sub.cub b/isis/tests/data/cnetedit/e0902065.cal.sub.cub new file mode 100644 index 0000000000000000000000000000000000000000..32bd8b0633e48585f36906bdd98c85ea2073d558 GIT binary patch literal 1213120 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%0A5{K>>VNe32etn|@ei8+hqeEa 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

`ku+#ZQ_mAw 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