Loading isis/src/base/objs/LidarData/LidarData.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ namespace Isis { * @param FileName lidarFile Name of the Lidar CSV file to use. */ LidarData::LidarData(FileName lidarFile) { read(lidarFile); } Loading Loading @@ -65,6 +65,7 @@ namespace Isis { */ void LidarData::read(FileName lidarFile) { // Set up the input file QFile loadFile(lidarFile.expanded()); if (!loadFile.open(QIODevice::ReadOnly)) { Loading @@ -76,6 +77,9 @@ namespace Isis { QByteArray saveData = loadFile.readAll(); QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); if (loadDoc.isNull()) { loadDoc = QJsonDocument::fromBinaryData(saveData); } // Unserialize LidarData QJsonObject lidarDataObject = loadDoc.object(); Loading Loading @@ -168,8 +172,14 @@ namespace Isis { * * @param FileName outputFile Name of the file to write to. */ void LidarData::write(FileName outputFile) { void LidarData::write(FileName outputFile, LidarData::Format format) { // Set up the output file if (format == Json) { outputFile = outputFile.setExtension(".json"); } else { outputFile = outputFile.setExtension(".dat"); } QFile saveFile(outputFile.expanded()); if (!saveFile.open(QIODevice::WriteOnly)) { Loading Loading @@ -216,6 +226,11 @@ namespace Isis { // Write the JSON to the file QJsonDocument lidarDataDoc(lidarDataObject); if (format == Json) { saveFile.write(lidarDataDoc.toJson()); } else { saveFile.write(lidarDataDoc.toBinaryData()); } } } isis/src/base/objs/LidarData/LidarData.h +9 −2 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ #include <QPointer> #include <QString> class QJsonObject; namespace Isis { class FileName; Loading @@ -24,6 +26,11 @@ namespace Isis { class LidarData { public: enum Format { Binary, Json }; LidarData(); LidarData(FileName); Loading @@ -32,7 +39,7 @@ namespace Isis { QList< QSharedPointer<LidarControlPoint> > points() const; void read(FileName); void write(FileName); void write(FileName, Format); private: /** Hash of the LidarControlPoints this class contains. */ Loading isis/src/base/objs/LidarData/unitTest.cpp +27 −7 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ int main(int argc, char *argv[]) { cout << "\tname of point: " << defaultData.points().first()->GetId() << endl; cout << endl; // Test write() // Test write() JSON format cout << "Testing write(FileName)... " << endl; LidarData mockData; double lat, lon, rad; Loading @@ -79,15 +79,35 @@ int main(int argc, char *argv[]) { } mockData.insert(lcp); } FileName outFile("./test.dat"); mockData.write(outFile); FileName outputFile("./test.json"); cout << outputFile.extension() << endl; mockData.write(outputFile, LidarData::Json); cout << endl; // Test write() with no data // Test read() with no data // Test write() binary format cout << outputFile.extension() << endl; outputFile = outputFile.setExtension("dat"); cout << outputFile.extension() << endl; cout << outputFile.expanded().toStdString() << endl; mockData.write(outputFile, LidarData::Binary); // Test read() binary format cout << "Testing read(FileName) from binary data... " << endl; LidarData fromBinary; fromBinary.read(outputFile); print(fromBinary); cout << endl; // Test read() cout << "Testing read(FileName)... " << endl; LidarData readData; readData.read(outFile); print(readData); cout << "Testing read(FileName) from JSON data... " << endl; LidarData fromJson; outputFile = outputFile.setExtension(".json"); fromJson.read(outputFile); print(fromJson); cout << endl; } Loading Loading
isis/src/base/objs/LidarData/LidarData.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ namespace Isis { * @param FileName lidarFile Name of the Lidar CSV file to use. */ LidarData::LidarData(FileName lidarFile) { read(lidarFile); } Loading Loading @@ -65,6 +65,7 @@ namespace Isis { */ void LidarData::read(FileName lidarFile) { // Set up the input file QFile loadFile(lidarFile.expanded()); if (!loadFile.open(QIODevice::ReadOnly)) { Loading @@ -76,6 +77,9 @@ namespace Isis { QByteArray saveData = loadFile.readAll(); QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); if (loadDoc.isNull()) { loadDoc = QJsonDocument::fromBinaryData(saveData); } // Unserialize LidarData QJsonObject lidarDataObject = loadDoc.object(); Loading Loading @@ -168,8 +172,14 @@ namespace Isis { * * @param FileName outputFile Name of the file to write to. */ void LidarData::write(FileName outputFile) { void LidarData::write(FileName outputFile, LidarData::Format format) { // Set up the output file if (format == Json) { outputFile = outputFile.setExtension(".json"); } else { outputFile = outputFile.setExtension(".dat"); } QFile saveFile(outputFile.expanded()); if (!saveFile.open(QIODevice::WriteOnly)) { Loading Loading @@ -216,6 +226,11 @@ namespace Isis { // Write the JSON to the file QJsonDocument lidarDataDoc(lidarDataObject); if (format == Json) { saveFile.write(lidarDataDoc.toJson()); } else { saveFile.write(lidarDataDoc.toBinaryData()); } } }
isis/src/base/objs/LidarData/LidarData.h +9 −2 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ #include <QPointer> #include <QString> class QJsonObject; namespace Isis { class FileName; Loading @@ -24,6 +26,11 @@ namespace Isis { class LidarData { public: enum Format { Binary, Json }; LidarData(); LidarData(FileName); Loading @@ -32,7 +39,7 @@ namespace Isis { QList< QSharedPointer<LidarControlPoint> > points() const; void read(FileName); void write(FileName); void write(FileName, Format); private: /** Hash of the LidarControlPoints this class contains. */ Loading
isis/src/base/objs/LidarData/unitTest.cpp +27 −7 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ int main(int argc, char *argv[]) { cout << "\tname of point: " << defaultData.points().first()->GetId() << endl; cout << endl; // Test write() // Test write() JSON format cout << "Testing write(FileName)... " << endl; LidarData mockData; double lat, lon, rad; Loading @@ -79,15 +79,35 @@ int main(int argc, char *argv[]) { } mockData.insert(lcp); } FileName outFile("./test.dat"); mockData.write(outFile); FileName outputFile("./test.json"); cout << outputFile.extension() << endl; mockData.write(outputFile, LidarData::Json); cout << endl; // Test write() with no data // Test read() with no data // Test write() binary format cout << outputFile.extension() << endl; outputFile = outputFile.setExtension("dat"); cout << outputFile.extension() << endl; cout << outputFile.expanded().toStdString() << endl; mockData.write(outputFile, LidarData::Binary); // Test read() binary format cout << "Testing read(FileName) from binary data... " << endl; LidarData fromBinary; fromBinary.read(outputFile); print(fromBinary); cout << endl; // Test read() cout << "Testing read(FileName)... " << endl; LidarData readData; readData.read(outFile); print(readData); cout << "Testing read(FileName) from JSON data... " << endl; LidarData fromJson; outputFile = outputFile.setExtension(".json"); fromJson.read(outputFile); print(fromJson); cout << endl; } Loading