Loading isis/src/base/objs/LidarData/LidarData.cpp +19 −19 Original line number Diff line number Diff line Loading @@ -214,14 +214,14 @@ namespace Isis { if (pointObject.contains("aprioriMatrix") && pointObject["aprioriMatrix"].isArray()) { QJsonArray aprioriMatrixArray = pointObject["apriorMatrix"].toArray(); QJsonArray aprioriMatrixArray = pointObject["aprioriMatrix"].toArray(); boost::numeric::ublas::symmetric_matrix<double, upper> aprioriMatrix(3); aprioriMatrix.clear(); aprioriMatrix(0, 0) = aprioriMatrixArray[0].toDouble(); aprioriMatrix(0, 1) = aprioriMatrixArray[1].toDouble(); aprioriMatrix(0, 2) = aprioriMatrixArray[2].toDouble(); aprioriMatrix(0, 1) = aprioriMatrix(1, 0) = aprioriMatrixArray[1].toDouble(); aprioriMatrix(0, 2) = aprioriMatrix(2, 0) = aprioriMatrixArray[2].toDouble(); aprioriMatrix(1, 1) = aprioriMatrixArray[3].toDouble(); aprioriMatrix(1, 2) = aprioriMatrixArray[4].toDouble(); aprioriMatrix(1, 2) = aprioriMatrix(2, 1) = aprioriMatrixArray[4].toDouble(); aprioriMatrix(2, 2) = aprioriMatrixArray[5].toDouble(); lcp->SetAprioriSurfacePoint(SurfacePoint(Latitude(latitude, Angle::Units::Degrees), Loading Loading @@ -259,10 +259,10 @@ namespace Isis { boost::numeric::ublas::symmetric_matrix<double, upper> adjustedMatrix(3); adjustedMatrix.clear(); adjustedMatrix(0, 0) = adjustedMatrixArray[0].toDouble(); adjustedMatrix(0, 1) = adjustedMatrixArray[1].toDouble(); adjustedMatrix(0, 2) = adjustedMatrixArray[2].toDouble(); adjustedMatrix(0, 1) = adjustedMatrix(1, 0) = adjustedMatrixArray[1].toDouble(); adjustedMatrix(0, 2) = adjustedMatrix(2, 0) = adjustedMatrixArray[2].toDouble(); adjustedMatrix(1, 1) = adjustedMatrixArray[3].toDouble(); adjustedMatrix(1, 2) = adjustedMatrixArray[4].toDouble(); adjustedMatrix(1, 2) = adjustedMatrix(2, 1) = adjustedMatrixArray[4].toDouble(); adjustedMatrix(2, 2) = adjustedMatrixArray[5].toDouble(); lcp->SetAdjustedSurfacePoint(SurfacePoint(Latitude(adjustedLatitude, Angle::Units::Degrees), Loading Loading @@ -380,12 +380,12 @@ namespace Isis { // Serialize the apriori matrix symmetric_matrix<double, upper> aprioriMatrix = aprioriSurfacePoint.GetSphericalMatrix(); QJsonArray aprioriMatrixArray; aprioriMatrixArray += toString(aprioriMatrix(0, 0)); aprioriMatrixArray += toString(aprioriMatrix(0, 1)); aprioriMatrixArray += toString(aprioriMatrix(0, 2)); aprioriMatrixArray += toString(aprioriMatrix(1, 1)); aprioriMatrixArray += toString(aprioriMatrix(1, 2)); aprioriMatrixArray += toString(aprioriMatrix(2, 2)); aprioriMatrixArray += aprioriMatrix(0, 0); aprioriMatrixArray += aprioriMatrix(0, 1); aprioriMatrixArray += aprioriMatrix(0, 2); aprioriMatrixArray += aprioriMatrix(1, 1); aprioriMatrixArray += aprioriMatrix(1, 2); aprioriMatrixArray += aprioriMatrix(2, 2); // If the covariance matrix has a value, add it to the PVL point. if ( aprioriMatrix(0, 0) != 0.0 Loading @@ -410,12 +410,12 @@ namespace Isis { // Serialize the adjusted matrix symmetric_matrix<double, upper> adjustedMatrix = adjustedSurfacePoint.GetSphericalMatrix(); QJsonArray adjustedMatrixArray; adjustedMatrixArray += toString(adjustedMatrix(0, 0)); adjustedMatrixArray += toString(adjustedMatrix(0, 1)); adjustedMatrixArray += toString(adjustedMatrix(0, 2)); adjustedMatrixArray += toString(adjustedMatrix(1, 1)); adjustedMatrixArray += toString(adjustedMatrix(1, 2)); adjustedMatrixArray += toString(adjustedMatrix(2, 2)); adjustedMatrixArray += adjustedMatrix(0, 0); adjustedMatrixArray += adjustedMatrix(0, 1); adjustedMatrixArray += adjustedMatrix(0, 2); adjustedMatrixArray += adjustedMatrix(1, 1); adjustedMatrixArray += adjustedMatrix(1, 2); adjustedMatrixArray += adjustedMatrix(2, 2); // If the covariance matrix has a value, add it to the PVL point. if ( adjustedMatrix(0, 0) != 0.0 Loading isis/src/base/objs/LidarData/LidarData.truth +442 −0 Original line number Diff line number Diff line Testing default constructor... number of points: 0 Testing insert(QSharedPointer<LidarControlPoint>)... number of points: 1 name of point: testLidarControlPoint time of point: 2018-01-31T14:05:00.1233999 Testing write(FileName)... json json dat ./test.dat Testing read(FileName) from binary data... LidarData: LidarControlPoint: id: testLidarControlPoint3 latitude: 53 longitude: 103 radius: 1000 range: 85 sigmaRange:0.1 time: 2018-01-31T14:08:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 3 SN: SN_3-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 3 SN: SN_3-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint4 latitude: 54 longitude: 104 radius: 1000 range: 95 sigmaRange:0.1 time: 2018-01-31T14:09:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 4 SN: SN_4-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 4 SN: SN_4-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint5 latitude: 55 longitude: 105 radius: 1000 range: 105 sigmaRange:0.1 time: 2018-01-31T14:10:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 5 SN: SN_5-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 5 SN: SN_5-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint1 latitude: 51 longitude: 101 radius: 1000 range: 65 sigmaRange:0.1 time: 2018-01-31T14:06:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 1 SN: SN_1-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 1 SN: SN_1-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint7 latitude: 57 longitude: 107 radius: 1000 range: 125 sigmaRange:0.1 time: 2018-01-31T14:12:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 7 SN: SN_7-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 7 SN: SN_7-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint9 latitude: 59 longitude: 109 radius: 1000 range: 145 sigmaRange:0.1 time: 2018-01-31T14:14:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 9 SN: SN_9-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 9 SN: SN_9-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint8 latitude: 58 longitude: 108 radius: 1000 range: 135 sigmaRange:0.1 time: 2018-01-31T14:13:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 8 SN: SN_8-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 8 SN: SN_8-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint10 latitude: 60 longitude: 110 radius: 1000 range: 155 sigmaRange:0.1 time: 2018-01-31T14:15:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 10 SN: SN_10-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 10 SN: SN_10-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint2 latitude: 52 longitude: 102 radius: 1000 range: 75 sigmaRange:0.1 time: 2018-01-31T14:07:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 2 SN: SN_2-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 2 SN: SN_2-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint6 latitude: 56 longitude: 106 radius: 1000 range: 115 sigmaRange:0.1 time: 2018-01-31T14:11:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 6 SN: SN_6-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 6 SN: SN_6-1 #END_ControlMeasure. #END_LidarControlPoint. Testing read(FileName) from JSON data... LidarData: LidarControlPoint: id: testLidarControlPoint3 latitude: 53 longitude: 103 radius: 1000 range: 85 sigmaRange:0.1 time: 2018-01-31T14:08:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 3 SN: SN_3-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 3 SN: SN_3-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint4 latitude: 54 longitude: 104 radius: 1000 range: 95 sigmaRange:0.1 time: 2018-01-31T14:09:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 4 SN: SN_4-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 4 SN: SN_4-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint5 latitude: 55 longitude: 105 radius: 1000 range: 105 sigmaRange:0.1 time: 2018-01-31T14:10:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 5 SN: SN_5-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 5 SN: SN_5-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint1 latitude: 51 longitude: 101 radius: 1000 range: 65 sigmaRange:0.1 time: 2018-01-31T14:06:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 1 SN: SN_1-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 1 SN: SN_1-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint7 latitude: 57 longitude: 107 radius: 1000 range: 125 sigmaRange:0.1 time: 2018-01-31T14:12:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 7 SN: SN_7-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 7 SN: SN_7-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint9 latitude: 59 longitude: 109 radius: 1000 range: 145 sigmaRange:0.1 time: 2018-01-31T14:14:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 9 SN: SN_9-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 9 SN: SN_9-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint8 latitude: 58 longitude: 108 radius: 1000 range: 135 sigmaRange:0.1 time: 2018-01-31T14:13:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 8 SN: SN_8-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 8 SN: SN_8-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint10 latitude: 60 longitude: 110 radius: 1000 range: 155 sigmaRange:0.1 time: 2018-01-31T14:15:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 10 SN: SN_10-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 10 SN: SN_10-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint2 latitude: 52 longitude: 102 radius: 1000 range: 75 sigmaRange:0.1 time: 2018-01-31T14:07:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 2 SN: SN_2-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 2 SN: SN_2-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint6 latitude: 56 longitude: 106 radius: 1000 range: 115 sigmaRange:0.1 time: 2018-01-31T14:11:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 6 SN: SN_6-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 6 SN: SN_6-1 #END_ControlMeasure. #END_LidarControlPoint. isis/src/base/objs/LidarData/unitTest.cpp +37 −11 Original line number Diff line number Diff line Loading @@ -14,8 +14,11 @@ #include "Preference.h" #include "SurfacePoint.h" #include "boost/numeric/ublas/symmetric.hpp" using namespace std; using namespace Isis; using namespace boost::numeric::ublas; void print(const LidarData &lidarData); Loading @@ -30,9 +33,9 @@ int main(int argc, char *argv[]) { // Set up our unit test preferences Preference::Preferences(true); LidarData data; FileName csvFile("RDR_98E100E_60N62NPointPerRow_csv_table-original.csv"); data.readCsv(csvFile); // LidarData data; // FileName csvFile("RDR_98E100E_60N62NPointPerRow_csv_table-original.csv"); // data.readCsv(csvFile); // Test LidarData() cout << "Testing default constructor... " << endl; Loading @@ -40,9 +43,9 @@ int main(int argc, char *argv[]) { cout << "\tnumber of points: " << defaultData.points().size() << endl; cout << endl; // Test LidarData(FileName) cout << "Testing LidarData(FileName)... " << endl; cout << endl; // // Test LidarData(FileName) // cout << "Testing LidarData(FileName)... " << endl; // cout << endl; // Test insert(QSharedPointer<LidarControlPoint>) cout << "Testing insert(QSharedPointer<LidarControlPoint>)... " << endl; Loading @@ -50,30 +53,50 @@ int main(int argc, char *argv[]) { double range = 55.0; double sigmaRange = 0.1; QSharedPointer<LidarControlPoint> lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint(time, range, sigmaRange)); QSharedPointer<LidarControlPoint>(new LidarControlPoint()); lcp->setTime(time); iTime check = lcp->time(); lcp->setRange(range); lcp->setSigmaRange(sigmaRange); lcp->SetId("testLidarControlPoint"); defaultData.insert(lcp); cout << "\tnumber of points: " << defaultData.points().size() << endl; cout << "\tname of point: " << defaultData.points().first()->GetId() << endl; cout << "\ttime of point: " << defaultData.points().first()->time().UTC() << endl; cout << endl; // Test write() JSON format cout << "Testing write(FileName)... " << endl; LidarData mockData; double lat, lon, rad; lat = 100.0; lon = 50.0; lat = 50.0; lon = 100.0; rad = 1000.0; boost::numeric::ublas::symmetric_matrix<double, upper> aprioriMatrix(3); aprioriMatrix.clear(); aprioriMatrix(0, 0) = 0.028656965032217; aprioriMatrix(1, 1) = 0.031198128120272; aprioriMatrix(2, 2) = 38.454887335682053718134171237789; // Angle(1.64192315,Angle::Degrees), // Angle(1.78752107, Angle::Degrees), // Distance(38.454887335682053718134171237789, Distance::Meters)); for (int i = 1; i < 11; i++) { time += 60.0; range += 10.0; lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint(time, range, sigmaRange)); lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint()); lcp->setTime(time); lcp->setRange(range); lcp->setSigmaRange(sigmaRange); lcp->SetId("testLidarControlPoint" + QString::number(i)); lat += 1.0; lon += 1.0; SurfacePoint sp(Latitude(lat, Angle::Units::Degrees), Longitude(lon, Angle::Units::Degrees), Distance(rad, Distance::Units::Kilometers)); sp.SetRadii(Distance(1000.0, Distance::Meters), Distance(1000.0, Distance::Meters), Distance(1000.0, Distance::Meters)); sp.SetSphericalMatrix(aprioriMatrix); lcp->SetAprioriSurfacePoint(sp); for (int j = 0; j < 2; j++) { ControlMeasure *measure = new ControlMeasure(); Loading Loading @@ -128,12 +151,15 @@ void print(const LidarData &lidarData) { lat = sp.GetLatitude().planetocentric(Angle::Units::Degrees); lon = sp.GetLongitude().positiveEast(Angle::Units::Degrees); rad = sp.GetLocalRadius().kilometers(); symmetric_matrix<double, upper> aprioriMatrix = sp.GetSphericalMatrix(); std::cout << "\t\tlatitude: " << lat << std::endl; std::cout << "\t\tlongitude: " << lon << std::endl; std::cout << "\t\tradius: " << rad << std::endl; std::cout << "\t\trange: " << point->range() << std::endl; std::cout << "\t\tsigmaRange:" << point->sigmaRange() << std::endl; std::cout << "\t\ttime: " << point->time().Et() << std::endl; // std::cout << "\t\ttime: " << point->time().Et() << std::endl; std::cout << "\t\ttime: " << point->time().UTC() << std::endl; std::cout << "\t\tmatrix: " << aprioriMatrix << std::endl; QList<ControlMeasure *> measures = point->getMeasures(); foreach (ControlMeasure *measure, measures) { std::cout << "\t\tControlMeasure: " << std::endl; Loading isis/src/control/objs/LidarControlPoint/LidarControlPoint.truth +2 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,5 @@ Testing Setters and Getters Set the range Set the sigma range Set the time Testing addSimultaneous and getter Serial number for simultaneous image added successfully isis/src/control/objs/LidarControlPoint/unitTest.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,8 @@ int main() { cout << "LidarControlPoint Unit Test" << endl; LidarControlPoint lcp(iTime(13.00), 10, 12); // LidarControlPoint lcp(iTime(13.00), 10, 12); LidarControlPoint lcp; cout << "Testing EditLocking" << endl; Loading Loading @@ -77,4 +78,18 @@ int main() { else { cout << "Error: Could not set the time." << endl; } cout << "Testing addSimultaneous and getter" << endl; QString newSerial = "LRO/1/286265995:36824/NACL"; if (lcp.addSimultaneous(newSerial) == ControlPoint::Status::Success) { cout << "Serial number for simultaneous image added successfully" << endl; QList < QString > simultaneousList = lcp.snSimultaneous(); if (simultaneousList[0] != "LRO/1/286265995:36824/NACL") { cout << "Error: Incorrect serial number added to list: " << simultaneousList[0] << endl; } } else { cout << "Add to simultaneous image list failed!" << endl; } } Loading
isis/src/base/objs/LidarData/LidarData.cpp +19 −19 Original line number Diff line number Diff line Loading @@ -214,14 +214,14 @@ namespace Isis { if (pointObject.contains("aprioriMatrix") && pointObject["aprioriMatrix"].isArray()) { QJsonArray aprioriMatrixArray = pointObject["apriorMatrix"].toArray(); QJsonArray aprioriMatrixArray = pointObject["aprioriMatrix"].toArray(); boost::numeric::ublas::symmetric_matrix<double, upper> aprioriMatrix(3); aprioriMatrix.clear(); aprioriMatrix(0, 0) = aprioriMatrixArray[0].toDouble(); aprioriMatrix(0, 1) = aprioriMatrixArray[1].toDouble(); aprioriMatrix(0, 2) = aprioriMatrixArray[2].toDouble(); aprioriMatrix(0, 1) = aprioriMatrix(1, 0) = aprioriMatrixArray[1].toDouble(); aprioriMatrix(0, 2) = aprioriMatrix(2, 0) = aprioriMatrixArray[2].toDouble(); aprioriMatrix(1, 1) = aprioriMatrixArray[3].toDouble(); aprioriMatrix(1, 2) = aprioriMatrixArray[4].toDouble(); aprioriMatrix(1, 2) = aprioriMatrix(2, 1) = aprioriMatrixArray[4].toDouble(); aprioriMatrix(2, 2) = aprioriMatrixArray[5].toDouble(); lcp->SetAprioriSurfacePoint(SurfacePoint(Latitude(latitude, Angle::Units::Degrees), Loading Loading @@ -259,10 +259,10 @@ namespace Isis { boost::numeric::ublas::symmetric_matrix<double, upper> adjustedMatrix(3); adjustedMatrix.clear(); adjustedMatrix(0, 0) = adjustedMatrixArray[0].toDouble(); adjustedMatrix(0, 1) = adjustedMatrixArray[1].toDouble(); adjustedMatrix(0, 2) = adjustedMatrixArray[2].toDouble(); adjustedMatrix(0, 1) = adjustedMatrix(1, 0) = adjustedMatrixArray[1].toDouble(); adjustedMatrix(0, 2) = adjustedMatrix(2, 0) = adjustedMatrixArray[2].toDouble(); adjustedMatrix(1, 1) = adjustedMatrixArray[3].toDouble(); adjustedMatrix(1, 2) = adjustedMatrixArray[4].toDouble(); adjustedMatrix(1, 2) = adjustedMatrix(2, 1) = adjustedMatrixArray[4].toDouble(); adjustedMatrix(2, 2) = adjustedMatrixArray[5].toDouble(); lcp->SetAdjustedSurfacePoint(SurfacePoint(Latitude(adjustedLatitude, Angle::Units::Degrees), Loading Loading @@ -380,12 +380,12 @@ namespace Isis { // Serialize the apriori matrix symmetric_matrix<double, upper> aprioriMatrix = aprioriSurfacePoint.GetSphericalMatrix(); QJsonArray aprioriMatrixArray; aprioriMatrixArray += toString(aprioriMatrix(0, 0)); aprioriMatrixArray += toString(aprioriMatrix(0, 1)); aprioriMatrixArray += toString(aprioriMatrix(0, 2)); aprioriMatrixArray += toString(aprioriMatrix(1, 1)); aprioriMatrixArray += toString(aprioriMatrix(1, 2)); aprioriMatrixArray += toString(aprioriMatrix(2, 2)); aprioriMatrixArray += aprioriMatrix(0, 0); aprioriMatrixArray += aprioriMatrix(0, 1); aprioriMatrixArray += aprioriMatrix(0, 2); aprioriMatrixArray += aprioriMatrix(1, 1); aprioriMatrixArray += aprioriMatrix(1, 2); aprioriMatrixArray += aprioriMatrix(2, 2); // If the covariance matrix has a value, add it to the PVL point. if ( aprioriMatrix(0, 0) != 0.0 Loading @@ -410,12 +410,12 @@ namespace Isis { // Serialize the adjusted matrix symmetric_matrix<double, upper> adjustedMatrix = adjustedSurfacePoint.GetSphericalMatrix(); QJsonArray adjustedMatrixArray; adjustedMatrixArray += toString(adjustedMatrix(0, 0)); adjustedMatrixArray += toString(adjustedMatrix(0, 1)); adjustedMatrixArray += toString(adjustedMatrix(0, 2)); adjustedMatrixArray += toString(adjustedMatrix(1, 1)); adjustedMatrixArray += toString(adjustedMatrix(1, 2)); adjustedMatrixArray += toString(adjustedMatrix(2, 2)); adjustedMatrixArray += adjustedMatrix(0, 0); adjustedMatrixArray += adjustedMatrix(0, 1); adjustedMatrixArray += adjustedMatrix(0, 2); adjustedMatrixArray += adjustedMatrix(1, 1); adjustedMatrixArray += adjustedMatrix(1, 2); adjustedMatrixArray += adjustedMatrix(2, 2); // If the covariance matrix has a value, add it to the PVL point. if ( adjustedMatrix(0, 0) != 0.0 Loading
isis/src/base/objs/LidarData/LidarData.truth +442 −0 Original line number Diff line number Diff line Testing default constructor... number of points: 0 Testing insert(QSharedPointer<LidarControlPoint>)... number of points: 1 name of point: testLidarControlPoint time of point: 2018-01-31T14:05:00.1233999 Testing write(FileName)... json json dat ./test.dat Testing read(FileName) from binary data... LidarData: LidarControlPoint: id: testLidarControlPoint3 latitude: 53 longitude: 103 radius: 1000 range: 85 sigmaRange:0.1 time: 2018-01-31T14:08:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 3 SN: SN_3-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 3 SN: SN_3-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint4 latitude: 54 longitude: 104 radius: 1000 range: 95 sigmaRange:0.1 time: 2018-01-31T14:09:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 4 SN: SN_4-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 4 SN: SN_4-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint5 latitude: 55 longitude: 105 radius: 1000 range: 105 sigmaRange:0.1 time: 2018-01-31T14:10:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 5 SN: SN_5-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 5 SN: SN_5-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint1 latitude: 51 longitude: 101 radius: 1000 range: 65 sigmaRange:0.1 time: 2018-01-31T14:06:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 1 SN: SN_1-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 1 SN: SN_1-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint7 latitude: 57 longitude: 107 radius: 1000 range: 125 sigmaRange:0.1 time: 2018-01-31T14:12:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 7 SN: SN_7-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 7 SN: SN_7-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint9 latitude: 59 longitude: 109 radius: 1000 range: 145 sigmaRange:0.1 time: 2018-01-31T14:14:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 9 SN: SN_9-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 9 SN: SN_9-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint8 latitude: 58 longitude: 108 radius: 1000 range: 135 sigmaRange:0.1 time: 2018-01-31T14:13:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 8 SN: SN_8-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 8 SN: SN_8-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint10 latitude: 60 longitude: 110 radius: 1000 range: 155 sigmaRange:0.1 time: 2018-01-31T14:15:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 10 SN: SN_10-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 10 SN: SN_10-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint2 latitude: 52 longitude: 102 radius: 1000 range: 75 sigmaRange:0.1 time: 2018-01-31T14:07:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 2 SN: SN_2-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 2 SN: SN_2-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint6 latitude: 56 longitude: 106 radius: 1000 range: 115 sigmaRange:0.1 time: 2018-01-31T14:11:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 6 SN: SN_6-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 6 SN: SN_6-1 #END_ControlMeasure. #END_LidarControlPoint. Testing read(FileName) from JSON data... LidarData: LidarControlPoint: id: testLidarControlPoint3 latitude: 53 longitude: 103 radius: 1000 range: 85 sigmaRange:0.1 time: 2018-01-31T14:08:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 3 SN: SN_3-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 3 SN: SN_3-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint4 latitude: 54 longitude: 104 radius: 1000 range: 95 sigmaRange:0.1 time: 2018-01-31T14:09:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 4 SN: SN_4-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 4 SN: SN_4-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint5 latitude: 55 longitude: 105 radius: 1000 range: 105 sigmaRange:0.1 time: 2018-01-31T14:10:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 5 SN: SN_5-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 5 SN: SN_5-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint1 latitude: 51 longitude: 101 radius: 1000 range: 65 sigmaRange:0.1 time: 2018-01-31T14:06:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 1 SN: SN_1-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 1 SN: SN_1-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint7 latitude: 57 longitude: 107 radius: 1000 range: 125 sigmaRange:0.1 time: 2018-01-31T14:12:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 7 SN: SN_7-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 7 SN: SN_7-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint9 latitude: 59 longitude: 109 radius: 1000 range: 145 sigmaRange:0.1 time: 2018-01-31T14:14:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 9 SN: SN_9-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 9 SN: SN_9-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint8 latitude: 58 longitude: 108 radius: 1000 range: 135 sigmaRange:0.1 time: 2018-01-31T14:13:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 8 SN: SN_8-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 8 SN: SN_8-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint10 latitude: 60 longitude: 110 radius: 1000 range: 155 sigmaRange:0.1 time: 2018-01-31T14:15:00.1233998 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 10 SN: SN_10-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 10 SN: SN_10-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint2 latitude: 52 longitude: 102 radius: 1000 range: 75 sigmaRange:0.1 time: 2018-01-31T14:07:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 2 SN: SN_2-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 2 SN: SN_2-1 #END_ControlMeasure. #END_LidarControlPoint. LidarControlPoint: id: testLidarControlPoint6 latitude: 56 longitude: 106 radius: 1000 range: 115 sigmaRange:0.1 time: 2018-01-31T14:11:00.1233999 matrix: [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549)) ControlMeasure: line: 0 sample: 6 SN: SN_6-0 #END_ControlMeasure. ControlMeasure: line: 1 sample: 6 SN: SN_6-1 #END_ControlMeasure. #END_LidarControlPoint.
isis/src/base/objs/LidarData/unitTest.cpp +37 −11 Original line number Diff line number Diff line Loading @@ -14,8 +14,11 @@ #include "Preference.h" #include "SurfacePoint.h" #include "boost/numeric/ublas/symmetric.hpp" using namespace std; using namespace Isis; using namespace boost::numeric::ublas; void print(const LidarData &lidarData); Loading @@ -30,9 +33,9 @@ int main(int argc, char *argv[]) { // Set up our unit test preferences Preference::Preferences(true); LidarData data; FileName csvFile("RDR_98E100E_60N62NPointPerRow_csv_table-original.csv"); data.readCsv(csvFile); // LidarData data; // FileName csvFile("RDR_98E100E_60N62NPointPerRow_csv_table-original.csv"); // data.readCsv(csvFile); // Test LidarData() cout << "Testing default constructor... " << endl; Loading @@ -40,9 +43,9 @@ int main(int argc, char *argv[]) { cout << "\tnumber of points: " << defaultData.points().size() << endl; cout << endl; // Test LidarData(FileName) cout << "Testing LidarData(FileName)... " << endl; cout << endl; // // Test LidarData(FileName) // cout << "Testing LidarData(FileName)... " << endl; // cout << endl; // Test insert(QSharedPointer<LidarControlPoint>) cout << "Testing insert(QSharedPointer<LidarControlPoint>)... " << endl; Loading @@ -50,30 +53,50 @@ int main(int argc, char *argv[]) { double range = 55.0; double sigmaRange = 0.1; QSharedPointer<LidarControlPoint> lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint(time, range, sigmaRange)); QSharedPointer<LidarControlPoint>(new LidarControlPoint()); lcp->setTime(time); iTime check = lcp->time(); lcp->setRange(range); lcp->setSigmaRange(sigmaRange); lcp->SetId("testLidarControlPoint"); defaultData.insert(lcp); cout << "\tnumber of points: " << defaultData.points().size() << endl; cout << "\tname of point: " << defaultData.points().first()->GetId() << endl; cout << "\ttime of point: " << defaultData.points().first()->time().UTC() << endl; cout << endl; // Test write() JSON format cout << "Testing write(FileName)... " << endl; LidarData mockData; double lat, lon, rad; lat = 100.0; lon = 50.0; lat = 50.0; lon = 100.0; rad = 1000.0; boost::numeric::ublas::symmetric_matrix<double, upper> aprioriMatrix(3); aprioriMatrix.clear(); aprioriMatrix(0, 0) = 0.028656965032217; aprioriMatrix(1, 1) = 0.031198128120272; aprioriMatrix(2, 2) = 38.454887335682053718134171237789; // Angle(1.64192315,Angle::Degrees), // Angle(1.78752107, Angle::Degrees), // Distance(38.454887335682053718134171237789, Distance::Meters)); for (int i = 1; i < 11; i++) { time += 60.0; range += 10.0; lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint(time, range, sigmaRange)); lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint()); lcp->setTime(time); lcp->setRange(range); lcp->setSigmaRange(sigmaRange); lcp->SetId("testLidarControlPoint" + QString::number(i)); lat += 1.0; lon += 1.0; SurfacePoint sp(Latitude(lat, Angle::Units::Degrees), Longitude(lon, Angle::Units::Degrees), Distance(rad, Distance::Units::Kilometers)); sp.SetRadii(Distance(1000.0, Distance::Meters), Distance(1000.0, Distance::Meters), Distance(1000.0, Distance::Meters)); sp.SetSphericalMatrix(aprioriMatrix); lcp->SetAprioriSurfacePoint(sp); for (int j = 0; j < 2; j++) { ControlMeasure *measure = new ControlMeasure(); Loading Loading @@ -128,12 +151,15 @@ void print(const LidarData &lidarData) { lat = sp.GetLatitude().planetocentric(Angle::Units::Degrees); lon = sp.GetLongitude().positiveEast(Angle::Units::Degrees); rad = sp.GetLocalRadius().kilometers(); symmetric_matrix<double, upper> aprioriMatrix = sp.GetSphericalMatrix(); std::cout << "\t\tlatitude: " << lat << std::endl; std::cout << "\t\tlongitude: " << lon << std::endl; std::cout << "\t\tradius: " << rad << std::endl; std::cout << "\t\trange: " << point->range() << std::endl; std::cout << "\t\tsigmaRange:" << point->sigmaRange() << std::endl; std::cout << "\t\ttime: " << point->time().Et() << std::endl; // std::cout << "\t\ttime: " << point->time().Et() << std::endl; std::cout << "\t\ttime: " << point->time().UTC() << std::endl; std::cout << "\t\tmatrix: " << aprioriMatrix << std::endl; QList<ControlMeasure *> measures = point->getMeasures(); foreach (ControlMeasure *measure, measures) { std::cout << "\t\tControlMeasure: " << std::endl; Loading
isis/src/control/objs/LidarControlPoint/LidarControlPoint.truth +2 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,5 @@ Testing Setters and Getters Set the range Set the sigma range Set the time Testing addSimultaneous and getter Serial number for simultaneous image added successfully
isis/src/control/objs/LidarControlPoint/unitTest.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,8 @@ int main() { cout << "LidarControlPoint Unit Test" << endl; LidarControlPoint lcp(iTime(13.00), 10, 12); // LidarControlPoint lcp(iTime(13.00), 10, 12); LidarControlPoint lcp; cout << "Testing EditLocking" << endl; Loading Loading @@ -77,4 +78,18 @@ int main() { else { cout << "Error: Could not set the time." << endl; } cout << "Testing addSimultaneous and getter" << endl; QString newSerial = "LRO/1/286265995:36824/NACL"; if (lcp.addSimultaneous(newSerial) == ControlPoint::Status::Success) { cout << "Serial number for simultaneous image added successfully" << endl; QList < QString > simultaneousList = lcp.snSimultaneous(); if (simultaneousList[0] != "LRO/1/286265995:36824/NACL") { cout << "Error: Incorrect serial number added to list: " << simultaneousList[0] << endl; } } else { cout << "Add to simultaneous image list failed!" << endl; } }