22 typedef std::numeric_limits< double > dbl;
26 #define UNDEFINED_STATUS 2 45 ControlNetFilter::ControlNetFilter(
ControlNet *pCNet, QString &psSerialNumFile,
Progress *pProgress) :
61 mOstm.open(outName.toLatin1().data(), std::ios::out);
62 mOstm.precision(dbl::digits10);
84 if (
mCNet->GetPoint(pindex)->IsEditLocked() ) {
104 bool pointEditFlag =
false;
105 QString ptId(measure->Parent()->
GetId());
107 if (point->IsEditLocked()) {
109 pointEditFlag =
true;
112 msr->SetEditLock(
false);
113 point->Delete(serialNum);
115 point->SetEditLock(
true);
126 mOstm <<
"PointID, PointType, PointIgnored, PointEditLocked, TotalMeasures, MeasuresIgnored, MeasuresEditLocked, ";
138 <<
", " <<
sBoolean[(int)pcPoint.IsIgnored()] <<
", " 139 <<
sBoolean[(int)pcPoint.IsEditLocked()] <<
", " 140 << pcPoint.GetNumMeasures() <<
", " 163 mOstm <<
"FileName, SerialNumber, ImageTotalPoints, ImagePointsIgnored, ImagePointsEditLocked, ImagePointsFixed, ImagePointsConstrained, ImagePointsFree, ImageConvexHullRatio,";
179 dLesser = fabs((
double)pvlGrp[
"LessThan"]);
183 dGreater = fabs((
double)pvlGrp[
"GreaterThan"]);
186 if (dLesser < 0 || dGreater < 0 || dLesser <= dGreater) {
187 string sErrMsg =
"Invalid Deffile - Check Point_PixelShift Group\n";
193 mOstm <<
"PointID, PointType, PointIgnored, PointEditLocked, FileName, SerialNumber, PixelShift, MeasureType, MeasureIgnored, MeasureEditLocked, Reference, ";
198 for (
int i = (iNumPoints - 1); i >= 0; i--) {
200 int iNumMeasures = cPoint->GetNumMeasures();
202 for (
int j = 0; j < iNumMeasures; j++){
204 double dPixelShift = measure->GetPixelShift();
205 if (dPixelShift <= dLesser && dPixelShift >= dGreater) {
217 for (
int j = 0; j < iNumMeasures; j++) {
219 <<
sBoolean[cPoint->IsIgnored()] <<
", " 220 <<
sBoolean[cPoint->IsEditLocked()] <<
", ";
224 double dPixelShift = measure->GetPixelShift();
227 <<
sBoolean[measure->IsIgnored()] <<
", " 250 int iLesser = VALID_MAX2;
254 iLesser =
toInt(pvlGrp[
"LessThan"][0]);
258 iGreater =
toInt(pvlGrp[
"GreaterThan"][0]);
261 if (iLesser < 0 || iGreater < 0 || iLesser < iGreater) {
262 string sErrMsg =
"Invalid Deffile - Check Point_MeasureEditLock Group\n";
269 mOstm <<
"FileName, SerialNumber, MeasureType, MeasureIgnored, MeasureEditLocked, Reference" << endl;
273 for (
int i = (iNumPoints - 1); i >= 0; i--) {
277 if (iNumLockedMsr > iLesser || iNumLockedMsr < iGreater) {
282 int iNumMeasures = cPoint->GetNumMeasures();
284 for (
int j = 0; j < iNumMeasures; j++) {
289 <<
sBoolean[cm->IsIgnored()] <<
", " 312 bool editLock =
false;
315 if(pvlGrp[
"EditLock"][0] ==
"1" ||
IString(pvlGrp[
"EditLock"][0]).
DownCase() ==
"true")
325 for (
int i = (iNumPoints - 1); i >= 0; i--) {
327 if (cPoint->IsEditLocked() != editLock) {
333 int iNumMeasures = cPoint->GetNumMeasures();
335 <<
sBoolean[cPoint->IsIgnored()] <<
", " 336 <<
sBoolean[cPoint->IsEditLocked()] <<
", " 337 << iNumMeasures <<
", " 363 if (pvlGrp[
"LessThan"][0] !=
"") {
364 dLesser = fabs((
double)pvlGrp[
"LessThan"]);
369 if (pvlGrp[
"GreaterThan"][0] !=
"") {
370 dGreater = fabs((
double)pvlGrp[
"GreaterThan"]);
374 if (dLesser < 0 || dGreater < 0 || dLesser < dGreater) {
375 string sErrMsg =
"Invalid Deffile - Check Point_ResidualMagnitude Group\n";
381 mOstm <<
"PointID, PointType, PointIgnored, PointEditLocked, FileName, SerialNumber, ResidualMagnitude, MeasureType, MeasureIgnored, MeasureEditLocked, Reference, ";
386 for (
int i = (iNumPoints - 1); i >= 0; i--) {
389 int iNumMeasures = cPoint->GetNumMeasures();
390 for (
int j = 0; j < iNumMeasures; j++) {
393 if (dResMag <= dLesser && dResMag >= dGreater) {
404 else if (pbLastFilter) {
406 for (
int j = 0; j < iNumMeasures; j++) {
408 <<
sBoolean[cPoint->IsIgnored()] <<
", " 409 <<
sBoolean[cPoint->IsEditLocked()] <<
", ";
416 <<
sBoolean[measure->IsIgnored()] <<
", " 438 QString sPointIDExpr = pvlGrp[
"Expression"][0];
439 QString sSeparator(
"*");
440 QStringList strTokens = sPointIDExpr.split(sSeparator, QString::SkipEmptyParts);
442 int iTokenSize = (int)strTokens.size();
445 odb <<
"Net Size=" << iNumPoints << endl;
453 for (
int i = (iNumPoints - 1); i >= 0; i--) {
455 QString sPointID = cPoint->
GetId();
457 for (
int j = (iTokenSize - 1); j >= 0; j--) {
458 int iLen = strTokens[j].length();
460 int found = sPointID.indexOf(strTokens[j], iPosition);
462 iPosition = found + iLen;
464 if (pbLastFilter && j == (iTokenSize - 1)) {
492 int iLesser = VALID_MAX2, iGreater = 0;
495 if (pvlGrp[
"LessThan"][0] !=
"") {
496 iLesser =
toInt(pvlGrp[
"LessThan"][0]);
501 if (pvlGrp[
"GreaterThan"][0] !=
"") {
502 iGreater =
toInt(pvlGrp[
"GreaterThan"][0]);
506 if (iLesser < 0 || iGreater < 0 || iLesser < iGreater) {
507 string sErrMsg =
"Invalid Deffile - Check Point_NumMeasures Group\n";
514 mOstm <<
"FileName, SerialNum, MeasureType, MeasureIgnore, MeasureEditLock, Reference" << endl;
519 for (
int i = (iNumPoints - 1); i >= 0; i--) {
521 int iNumMeasures = cPoint->GetNumMeasures();
522 if (iNumMeasures > iLesser || iNumMeasures < iGreater) {
527 for (
int j = 0; j < iNumMeasures; j++) {
532 <<
sBoolean[cm->IsIgnored()] <<
", " 554 bool bIgnoredFlag =
false;
555 int iSetIgnoreFlag = 0;
560 if (pvlGrp[
"PointType"][0] !=
"") {
561 sType = pvlGrp[
"PointType"][0];
568 sTemp = pvlGrp[
"Ignore"][0];
569 if (sTemp ==
"1" || sTemp.
DownCase() ==
"true") {
581 for (
int i = (iNumPoints - 1); i >= 0; i--) {
583 bool bPointFound =
false;
584 bool bIgnored = cPoint->IsIgnored();
589 if (!iSetIgnoreFlag || bIgnoredFlag == bIgnored) {
590 if (sType ==
"all" || sType==
"") {
593 else if (sType ==
"fixed" && bFixed) {
596 else if (sType ==
"constrained" && bConstrained) {
599 else if (sType ==
"free" && bFree) {
634 if (pvlGrp[
"MinLat"][0] !=
"") {
635 dMinLat = pvlGrp[
"MinLat"];
640 if (pvlGrp[
"MaxLat"][0] !=
"") {
641 dMaxLat = pvlGrp[
"MaxLat"];
646 if (pvlGrp[
"MinLon"][0] !=
"") {
647 dMinLon = pvlGrp[
"MinLon"];
652 if (pvlGrp[
"MaxLon"][0] !=
"") {
653 dMaxLon = pvlGrp[
"MaxLon"];
657 if (dMinLat > dMaxLat || dMinLon > dMaxLon) {
658 string sErrMsg =
"Invalid Deffile - Check Point_LatLon Group\n";
665 mOstm <<
"Latitude, Longitude, Radius" << endl;
670 for (
int i = (iNumPoints - 1); i >= 0; i--) {
672 SurfacePoint cPointSurfPt = cPoint->GetAdjustedSurfacePoint();
674 if (!cPointSurfPt.Valid()) {
679 Cube cube(filename,
"r");
682 if (camera->
SetImage(cm->GetSample(), cm->GetLine())) {
694 if ((latitude < dMinLat || latitude > dMaxLat) ||
695 (longitude < dMinLon ||longitude > dMaxLon)) {
702 mOstm << latitude <<
", " << longitude <<
", " <<
721 double dMaxDistance = 0;
722 QString sUnits =
"pixels";
725 if (pvlGrp[
"MaxDistance"][0] !=
"") {
726 dMaxDistance = pvlGrp[
"MaxDistance"];
731 sUnits = pvlGrp[
"Units"][0];
736 mOstm <<
"Point#Distance >>, " << endl;
739 bool bMinDistance =
false;
741 for (
int i = (iNumPoints - 1); i >= 0; i--) {
749 if (sUnits ==
"meters") {
750 surfacePt1 = cp1->GetAdjustedSurfacePoint();
752 if (!surfacePt1.Valid()) {
755 Cube cube1(filename1,
"r");
757 if (cam1->
SetImage(cp1RefMeasure->GetSample(),
758 cp1RefMeasure->GetLine())) {
772 dSample1 = cp1RefMeasure->GetSample();
773 dLine1 = cp1RefMeasure->GetLine();
789 if (sUnits ==
"meters") {
790 surfacePt2 = cp2->GetAdjustedSurfacePoint();
792 if (!surfacePt2.Valid()) {
795 Cube cube2(filename2,
"r");
798 if (cam2->
SetImage(cp2RefMeasure->GetSample(),
799 cp2RefMeasure->GetLine())) {
816 dSample2 = cp2RefMeasure->GetSample();
817 dLine2 = cp2RefMeasure->GetLine();
819 double dDeltaSamp = dSample1 - dSample2;
820 double dDeltaLine = dLine1 - dLine2;
822 dDist = sqrt((dDeltaSamp * dDeltaSamp) + (dDeltaLine * dDeltaLine));
825 if (dDist <= dMaxDistance) {
830 mOstm << cp2->
GetId() <<
"#" << dDist <<
", ";
840 if (pbLastFilter && bMinDistance) {
843 bMinDistance =
false;
867 if (pvlGrp[
"LessThan"][0] !=
"") {
868 dLesser = fabs((
double)(pvlGrp[
"LessThan"]));
873 if (pvlGrp[
"GreaterThan"][0] !=
"") {
874 dGreater = fabs((
double)pvlGrp[
"GreaterThan"]);
880 mOstm <<
"FileName, SerialNumber, GoodnessOfFit, MeasureType, MeasureIgnored, MeasureEditLocked, Reference" << endl;
884 for (
int i=(iNumPoints-1); i>=0; i--) {
886 int iNumMeasures = cPoint->GetNumMeasures();
887 bool bMatchFlag=
false;
889 for (
int j=0; j<iNumMeasures; j++) {
892 if (dMsrGFit >= dGreater && dMsrGFit <= dLesser) {
904 int iNumMeasures = cPoint->GetNumMeasures();
906 for (
int j = 0; j < iNumMeasures; j++) {
911 <<
sBoolean[cPoint->IsIgnored()] <<
", " <<
sBoolean[cPoint->IsEditLocked()] <<
", " 916 <<
sBoolean[measure->IsIgnored()] <<
", " 938 int iIgnoredFlag = -1;
954 mOstm <<
"FileName, SerialNumber, MeasureIgnored, MeasureType, MeasureEditLocked, Reference," << endl;
958 for (
int i = (iNumPoints - 1); i >= 0; i--) {
961 int iNumMeasures = cPoint->GetNumMeasures();
962 int iNotMeasureType = 0;
963 for (
int j = 0; j < iNumMeasures; j++) {
965 bool bMeasureIgnored = cMeasure->IsIgnored();
966 bool bMeasureFound =
false;
968 if (iIgnoredFlag == -1 || bMeasureIgnored == iIgnoredFlag) {
969 if (sType ==
"all" || sType ==
"") {
970 bMeasureFound =
true;
973 bMeasureFound =
true;
976 bMeasureFound =
true;
979 bMeasureFound =
true;
982 bMeasureFound =
true;
990 <<
sBoolean[(int) cMeasure->IsIgnored()] <<
", " 1001 if (iNotMeasureType == iNumMeasures) {
1023 for (
int i = 0; i < pvlGrp.
keywords(); i++) {
1024 sCubeNames.push_back(pvlGrp[i][0]);
1027 int size = sCubeNames.size();
1032 mOstm <<
"ImageMeasureIgnored, ImageMeasureEditLocked, ";
1037 for (
int i = (iNumPoints - 1); i >= 0; i--) {
1039 int iNumMeasures = cPoint->GetNumMeasures();
1040 int iNumNoMatch = 0;
1041 bool bMatch =
false;
1042 for (
int j = 0; j < iNumMeasures; j++) {
1044 for (
int k = 0; k < size; k++) {
1054 if (iNumNoMatch == iNumMeasures) {
1065 for (
int i = 0; i < iNumPoints; i++) {
1067 int iNumMeasures = cPoint->GetNumMeasures();
1068 for (
int j = 0; j < iNumMeasures; j++) {
1073 <<
sBoolean[cPoint->IsIgnored()] <<
", " 1074 <<
sBoolean[cPoint->IsEditLocked()] <<
", " 1075 << iNumMeasures <<
", " 1083 << imgStats[imgTotalPoints] <<
", " << imgStats[imgIgnoredPoints] <<
", " 1084 << imgStats[imgLockedPoints] <<
", " << imgStats[imgFixedPoints] <<
", " 1085 << imgStats[imgConstrainedPoints] <<
", " << imgStats[imgFreePoints] <<
", " 1086 << imgStats[imgConvexHullRatio] <<
", " 1109 double dGreater = 0;
1112 if (pvlGrp[
"LessThan"][0] !=
"") {
1113 dLesser = fabs((
double)pvlGrp[
"LessThan"]);
1118 if (pvlGrp[
"GreaterThan"][0] !=
"") {
1119 dGreater = fabs((
double)pvlGrp[
"GreaterThan"]);
1123 if (dLesser < 0 || dGreater < 0 || dLesser <= dGreater) {
1124 string sErrMsg =
"Invalid Deffile - Check Cube_ConvexHullRatio Group\n";
1136 for (
int sn = (iNumCubes - 1); sn >= 0; sn--) {
1139 double convexHullRatio = imgStats[imgConvexHullRatio];
1140 if (convexHullRatio < dGreater || convexHullRatio > dLesser){
1144 else if (pbLastFilter) {
1146 << imgStats[imgTotalPoints] <<
", " << imgStats[imgIgnoredPoints] <<
", " << imgStats[imgLockedPoints] <<
", " 1147 << imgStats[imgFixedPoints] <<
", " << imgStats[imgConstrainedPoints] <<
", " << imgStats[imgFreePoints] <<
", " 1148 << imgStats[imgConvexHullRatio]<< endl;
1166 QString sCubeExpr(
"");
1168 sCubeExpr = QString(pvlGrp[
"Expression"][0]);
1171 QString sSeparator(
"*");
1172 QStringList strTokens = sCubeExpr.split(sSeparator, QString::SkipEmptyParts);
1174 int iTokenSize = (int)strTokens.size();
1182 for (
int i = (iNumCubes - 1); i >= 0; i--) {
1186 for (
int j = (iTokenSize - 1); j >= 0; j--) {
1187 int iLen = strTokens[j].length();
1189 int found = sSerialNum.indexOf(strTokens[j], iPosition);
1191 iPosition = found + iLen;
1193 if (j == (iTokenSize - 1)) {
1211 for (
int i = 0; i < iNumCubes; i++) {
1217 << imgStats[imgTotalPoints] <<
", " << imgStats[imgIgnoredPoints] <<
", " << imgStats[imgLockedPoints] <<
", " 1218 << imgStats[imgFixedPoints] <<
", " << imgStats[imgConstrainedPoints] <<
", " << imgStats[imgFreePoints] <<
", " 1219 << imgStats[imgConvexHullRatio]<< endl;
1234 int iLessPoints = VALID_MAX2, iGreaterPoints = 0;
1236 if (pvlGrp[
"LessThan"][0] !=
"") {
1237 iLessPoints =
toInt(pvlGrp[
"LessThan"][0]);
1241 if (pvlGrp[
"GreaterThan"][0] !=
"") {
1242 iGreaterPoints =
toInt(pvlGrp[
"GreaterThan"][0]);
1246 if (iLessPoints < 0 || iGreaterPoints < 0 || iLessPoints < iGreaterPoints) {
1247 QString sErrMsg =
"Invalid Deffile - Check Cube_NumPoints Group\n";
1258 for (
int sn = (iNumCubes - 1); sn >= 0; sn--) {
1261 double numPoints = imgStats[imgTotalPoints];
1262 if (numPoints < iGreaterPoints || numPoints > iLessPoints){
1266 else if (pbLastFilter) {
1268 << imgStats[imgTotalPoints] <<
", " << imgStats[imgIgnoredPoints] <<
", " << imgStats[imgLockedPoints] <<
", " 1269 << imgStats[imgFixedPoints] <<
", " << imgStats[imgConstrainedPoints] <<
", " << imgStats[imgFreePoints] <<
", " 1270 << imgStats[imgConvexHullRatio] << endl;
1288 double dDistance = 0;
1289 QString sUnits =
"pixels";
1292 if (pvlGrp[
"MaxDistance"][0] !=
"") {
1293 dDistance = pvlGrp[
"MaxDistance"];
1298 sUnits = pvlGrp[
"Units"][0];
1301 if (dDistance <= 0) {
1302 string sErrMsg =
"Invalid Deffile - Check Cube_Distance Group\n";
1309 mOstm <<
"Distance_PointIDs >>, " << endl;
1313 for (
int sn = (iNumCubes - 1); sn >= 0; sn--) {
1318 bool bMatchDistance =
false;
1325 int iPointsTotal = 0;
1326 int iPointsIgnored = 0;
1327 int iPointsFixed = 0;
1328 int iPointsConstrained = 0;
1329 int iPointsFree = 0;
1330 int iPointsLocked = 0;
1333 sPointIndex1.clear();
1334 sPointIndex2.clear();
1335 dPointDistance.clear();
1338 for (
int i = 0; i < iNumPoints; i++) {
1341 bool bImageFound =
false;
1342 int iNumMeasures1 = cPoint1->GetNumMeasures();
1343 for (
int j = 0; j < iNumMeasures1; j++) {
1347 if (cPoint1->IsIgnored()) {
1354 iPointsConstrained++;
1359 if (cPoint1->IsEditLocked()) {
1373 double dRadius = 0, dLat1 = 0, dLon1 = 0;
1374 if (sUnits ==
"meters") {
1376 if (cam->SetImage(cMeasure1->GetSample(), cMeasure1->GetLine())) {
1377 dRadius = cam->LocalRadius().meters();
1378 dLat1 = cam->UniversalLatitude();
1379 dLon1 = cam->UniversalLongitude();
1385 for (
int k = (i + 1); k < iNumPoints; k++) {
1387 int iNumMeasures2 = cPoint2->GetNumMeasures();
1389 bool bImageFound2 =
false;
1391 for (
int j = 0; j < iNumMeasures2; j++) {
1394 bImageFound2 =
true;
1398 if (!bImageFound2 ||
1399 (cMeasure2->GetSample() == 0 && cMeasure2->GetLine() == 0))
1402 if (sUnits ==
"pixels") {
1403 double dDeltaSamp = cMeasure1->GetSample() - cMeasure2->GetSample();
1404 double dDeltaLine = cMeasure1->GetLine() - cMeasure2->GetLine();
1406 dDist = sqrt((dDeltaSamp * dDeltaSamp) + (dDeltaLine * dDeltaLine));
1411 double dLat2 = 0, dLon2 = 0;
1412 if (cam->SetImage(cMeasure2->GetSample(), cMeasure2->GetLine())) {
1413 dLat2 = cam->UniversalLatitude();
1414 dLon2 = cam->UniversalLongitude();
1431 if (!dDist || dDist >= dDistance) {
1435 bMatchDistance =
true;
1436 sPointIndex1.push_back(i);
1437 sPointIndex2.push_back(k);
1438 dPointDistance.push_back(dDist);
1446 if (!bMatchDistance) {
1450 else if (pbLastFilter) {
1453 << iPointsTotal <<
", " << iPointsIgnored <<
", " << iPointsLocked <<
", " 1454 << iPointsFixed <<
", " << iPointsConstrained <<
", " << iPointsFree <<
", " 1455 << imgStats[ imgConvexHullRatio] <<
", ";
1456 for (
int j = 0; j < (int)sPointIndex1.size(); j++) {
1457 QString sPointIDDist =
toString(dPointDistance[j]);
1458 sPointIDDist +=
"#";
1459 sPointIDDist += (*mCNet)[sPointIndex1[j]]->GetId();
1460 sPointIDDist +=
"#";
1461 sPointIDDist += (*mCNet)[sPointIndex2[j]]->GetId();
1463 mOstm << sPointIDDist <<
",";
This class defines a body-fixed surface point.
std::ofstream mOstm
output stream for printing to output file
int keywords() const
Returns the number of keywords contained in the PvlContainer.
double meters() const
Get the distance in meters.
void CubeNumPointsFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Cubes by number of points in the cube.
bool hasKeyword(const QString &name) const
Check to see if a keyword exists.
void GenerateImageStats()
Generate stats like Total, Ignored, Fixed Points in an Image.
const double Null
Value for an Isis Null pixel.
void SetSpherical(const Latitude &lat, const Longitude &lon, const Distance &radius, const Angle &latSigma=Angle(), const Angle &lonSigma=Angle(), const Distance &radiusSigma=Distance())
Set surface point and covariance matrix in planetocentric coordinates and convert to rectangular (Lat...
void PointStatsHeader(void)
Standard Point stats Header.
(e.g., autoseed, interest) AKA predicted, unmeasured, unverified
A Constrained point is a Control Point whose lat/lon/radius is somewhat established and should not be...
const double ValidMinimum
The minimum valid double value for Isis pixels.
A Fixed point is a Control Point whose lat/lon is well established and should not be changed...
File name manipulation and expansion.
void CubeDistanceFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Cubes by Distance between points in a Cube.
double UniversalLatitude() const
Returns the planetocentric latitude, in degrees, at the surface intersection point in the body fixed ...
void SetOutputFile(QString psPrintFile)
Set the output print file.
void PointPropertiesFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by properties.
ControlNet * mCNet
Control Network.
Distance GetDistanceToPoint(const SurfacePoint &other) const
Computes and returns the distance between two surface points.
const ControlMeasure * GetMeasure(QString serialNumber) const
Get a control measure based on its cube's serial number.
void CubeStatsHeader(void)
Print the standard cube stats Header.
QString serialNumber(const QString &filename)
Return a serial number given a filename.
void PointGoodnessOfFitFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by GoodnessOfFit.
double GetResidualMagnitude() const
Return Residual magnitude.
int toInt(const QString &string)
Global function to convert from a string to an integer.
Namespace for the standard library.
void PointLatLonFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Lat Lon Range.
QString sPointType[]
String names for Point Type.
This class is designed to encapsulate the concept of a Latitude.
void FilterOutMeasuresBySerialNum(QString serialNum)
Delete the network for an Image given Serial Number for all the Points in the network.If the Measure is locked, then it is unlocked in preparation for deleting.
void PointNumMeasuresEditLockFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Measure Edit Lock number.
void PointPixelShiftFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Pixel Shift.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
Registered to whole pixel (e.g.,pointreg)
QVector< double > GetImageStatsBySerialNum(QString psSerialNum) const
Returns the Image Stats by Serial Number.
Registered to sub-pixel (e.g., pointreg)
Status SetEditLock(bool editLock)
Set the EditLock state.
int GetNumValidMeasures() const
Distance measurement, usually in meters.
Latitude GetLatitude() const
Return the body-fixed latitude for the surface point.
double degrees() const
Get the angle in units of Degrees.
A Free point is a Control Point that identifies common measurements between two or more cubes...
QString GetMeasureTypeString() const
Obtain a string representation of the MeasureType.
QString fileName(const QString &sn)
Return a filename given a serial number.
Distance LocalRadius() const
Returns the local radius at the intersection point.
bool SetImage(const double sample, const double line)
Sets the sample/line values of the image to get the lat/lon values.
int GetNumPoints() const
Return the number of control points in the network.
This class is designed to encapsulate the concept of a Longitude.
void FilterOutPoint(int pindex)
Check the filtered point to be editlocked before removing from the current control network...
Program progress reporter.
Degrees are generally considered more human readable, 0-360 is one circle, however most math does not...
Hand Measured (e.g., qnet)
int GetNumLockedMeasures() const
Returns the number of locked control measures.
QString GetId() const
Return the Id of the control point.
void PointIDFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Point ID Expression.
Contains multiple PvlContainers.
#define _FILEINFO_
Macro for the filename and line number.
A type of error that could only have occurred due to a mistake on the user's part (e...
QString expanded() const
Returns a QString of the full file name including the file path, excluding the attributes.
void PointEditLockFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Edit Lock.
int DeletePoint(ControlPoint *point)
Delete a ControlPoint from the network by the point's address.
SerialNumberList mSerialNumList
Serial Number List.
static Camera * Create(Cube &cube)
Creates a Camera object using Pvl Specifications.
QString sBoolean[]
String values for Boolean.
void remove(const QString &sn)
Remove the specified serial number from the list.
double UniversalLongitude() const
Returns the positive east, 0-360 domain longitude, in degrees, at the surface intersection point in t...
SerialNumberList mSerialNumFilter
Serial Number List file.
int size() const
How many serial number / filename combos are in the list.
void PointStats(const ControlPoint &pcPoint)
Standard Point Stats.
const ControlMeasure * GetRefMeasure() const
Get the reference control measure.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
IString DownCase()
Converts all upper case letters in the object IString into lower case characters. ...
GoodnessOfFit is pointreg information for reference measures.
Longitude GetLongitude() const
Return the body-fixed longitude for the surface point.
const double ValidMaximum
The maximum valid double value for Isis pixels.
QList< ControlMeasure *> GetMeasuresInCube(QString serialNumber)
Get all the measures pertaining to a given cube serial number.
void CubeNameExpressionFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Cubes by Cube name expression.
void PrintCubeFileSerialNum(const ControlMeasure &pcMeasure)
Print Cube's File and Serial Number into the Output File.
Adds specific functionality to C++ strings.
Namespace for ISIS/Bullet specific routines.
bool IsEditLocked() const
Return value for p_editLock or implicit lock on reference measure.
The distance is being specified in meters.
void CubeConvexHullFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Cubes by its ConvexHull Ratio.
double GetNumericalValue() const
Get the value associated with this log data.
void PointResMagnitudeFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Residual Magnitude.
void PointCubeNamesFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Cube names.
~ControlNetFilter()
Destructor.
PointType GetType() const
void PointMeasurePropertiesFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Measure properties.
Serial Number list generator.
Distance GetLocalRadius() const
Return the radius of the surface point.
void PointDistanceFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by distance between points.
QString GetCubeSerialNumber() const
Return the serial number of the cube containing the coordinate.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
void PointMeasuresFilter(const PvlGroup &pvlGrp, bool pbLastFilter)
Filter Points by Number of measures.
IO Handler for Isis Cubes.