61 if (diffFile.
hasGroup(
"Tolerances")) {
63 for (
int i = 0; i < tolerances.
keywords(); i++)
68 if (diffFile.
hasGroup(
"IgnoreKeys")) {
70 for (
int i = 0; i < ignoreKeys.
keywords(); i++)
88 diff(
"Filename", net1Name.
name(), net2Name.
name(), report);
93 BigInt net1NumPts = cnv1.numPoints();
97 diff(
"NetworkId", cnv1.netId(), cnv2.
netId(), report);
100 Pvl net1Pvl = cnv1.toPvl();
108 for (
int p = 0; p < net1NumPts; p++) {
114 for (
int p = 0; p < net2NumPts; p++) {
122 for (
int i = 0; i < pointNames.size(); i++) {
124 if (idMap.size() == 2) {
125 compare(idMap[0], idMap[1], report);
127 else if (idMap.contains(0)) {
128 addUniquePoint(
"PointId", idMap[0].findKeyword(
"PointId")[0],
"N/A", report);
130 else if (idMap.contains(1)) {
131 addUniquePoint(
"PointId",
"N/A", idMap[1].findKeyword(
"PointId")[0], report);
156 int p1Measures = point1Pvl.
groups();
157 int p2Measures = point2Pvl.
groups();
163 for (
int m = 0; m < p1Measures; m++) {
165 measureMap[measure.
findKeyword(
"SerialNumber")[0]].insert(
169 for (
int m = 0; m < p2Measures; m++) {
171 measureMap[measure.
findKeyword(
"SerialNumber")[0]].insert(
176 for (
int i = 0; i < measureNames.size(); i++) {
178 if (idMap.size() == 2) {
181 else if (idMap.contains(0)) {
182 addUniqueMeasure(
"SerialNumber", idMap[0].findKeyword(
"SerialNumber")[0],
"N/A", pointReport);
184 else if (idMap.contains(1)) {
185 addUniqueMeasure(
"SerialNumber",
"N/A", idMap[1].findKeyword(
"SerialNumber")[0], pointReport);
217 for (
int k = 0; k < g1.
keywords(); k++)
218 keywordMap[g1[k].name()].insert(0, g1[k]);
219 for (
int k = 0; k < g2.
keywords(); k++)
220 keywordMap[g2[k].name()].insert(1, g2[k]);
223 for (
int i = 0; i < keywordNames.size(); i++) {
225 if (idMap.size() == 2) {
226 compare(idMap[0], idMap[1], groupReport);
228 else if (idMap.contains(0)) {
229 QString name = idMap[0].name();
231 diff(name, idMap[0][0],
"N/A", groupReport);
233 else if (idMap.contains(1)) {
234 QString name = idMap[1].name();
236 diff(name,
"N/A", idMap[1][0], groupReport);
259 QString name = k1.
name();
263 diff(name, k1[0], k2[0], report);
278 QString v1 = o1[name][0];
279 QString v2 = o2[name][0];
280 diff(name, v1, v2, report);
353 if (fabs(v1 - v2) > tol) {
PvlObject & object(const int index)
Return the object at the specified index.
long long int BigInt
Big int.
void addUniqueMeasure(QString label, QString v1, QString v2, PvlObject &parent)
Add a new keyword for the given measure to the parent object.
int keywords() const
Returns the number of keywords contained in the PvlContainer.
bool hasKeyword(const QString &name) const
Check to see if a keyword exists.
void diff(QString name, PvlObject &o1, PvlObject &o2, PvlContainer &report)
Add a new difference keyword to the given report if the PvlObjects have different values for the keyw...
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
void compareGroups(PvlContainer &g1, PvlContainer &g2, PvlObject &report)
Compare two collections, or groupings, of PvlKeywords.
void init()
Initialize the persistent structures used to maintain the state of this instance: its ignore keys and...
PvlGroupIterator findGroup(const QString &name, PvlGroupIterator beg, PvlGroupIterator end)
Find a group with the specified name, within these indexes.
Contains more than one keyword-value pair.
File name manipulation and expansion.
Pvl toPvl()
Generates a Pvl file from the currently stored control points and header.
PvlObjectIterator findObject(const QString &name, PvlObjectIterator beg, PvlObjectIterator end)
Find the index of object with a specified name, between two indexes.
void addGroup(const Isis::PvlGroup &group)
Add a group to the object.
QMap< QString, double > * m_tolerances
The map of tolerances going from keyword name to tolerance value.
Handle various control network file format versions.
QString name() const
Returns the name of the file excluding the path and the attributes in the file name.
bool hasGroup(const QString &name) const
Returns a boolean value based on whether the object has the specified group or not.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
void addKeyword(const PvlKeyword &keyword, const InsertMode mode=Append)
Add a keyword to the container.
double toDouble(const QString &string)
Global function to convert from a string to a double.
void addObject(const PvlObject &object)
Add a PvlObject.
QString name() const
Returns the container name.
ControlNetDiff()
Create a ControlNetDiff without any tolerances.
PvlKeyword & findKeyword(const QString &kname, FindOptions opts)
Finds a keyword in the current PvlObject, or deeper inside other PvlObjects and Pvlgroups within this...
Contains multiple PvlContainers.
A single keyword-value pair.
PvlKeyword makeKeyword(QString name, QString v1, QString v2)
Create a new keyword with the given label name and the given values.
Container for cube-like labels.
QString targetName() const
Returns the target for the network.
PvlKeyword & findKeyword(const QString &name)
Find a keyword with a specified name.
PvlGroup & group(const int index)
Return the group at the specified index.
QString name() const
Returns the keyword name.
void addUniquePoint(QString label, QString v1, QString v2, PvlObject &parent)
Add a new keyword for the given point to the parent object.
QString netId() const
Returns the ID for the network.
Namespace for ISIS/Bullet specific routines.
virtual ~ControlNetDiff()
Destroy the ControlNetDiff.
Pvl compare(FileName &net1Name, FileName &net2Name)
Compare two Control Networks given their file names, and return their differences.
int groups() const
Returns the number of groups contained.
Contains Pvl Groups and Pvl Objects.
QSet< QString > * m_ignoreKeys
The set of keywords to ignore by name.
void addTolerances(Pvl &diffFile)
Add the given ignore keys and tolerances to the persisent collections of such values.
void addValue(QString value, QString unit="")
Adds a value with units.
int numPoints() const
Returns the number of points that have been read in or are ready to write out.