Loading isis/src/base/objs/LidarData/LidarData.cpp +58 −1 Original line number Diff line number Diff line #include "LidarData.h" #include <QFile> #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> #include <QList> #include <QSharedPointer> #include "Angle.h" #include "Distance.h" #include "FileName.h" #include "IException.h" #include "Latitude.h" #include "LidarControlPoint.h" #include "Longitude.h" #include "SurfacePoint.h" namespace Isis { Loading Loading @@ -64,6 +74,53 @@ namespace Isis { * @param FileName outputFile Name of the file to write to. */ void LidarData::write(FileName outputFile) { // Set up the output file QFile saveFile(outputFile.expanded()); if (!saveFile.open(QIODevice::WriteOnly)) { QString msg("Could not open " + saveFile.fileName()); throw IException(IException::User, msg, _FILEINFO_); } // Serialize LidarData QJsonObject lidarDataObject; QJsonArray pointArray; // Serialize the LidarControlPoints it contains foreach (QSharedPointer<LidarControlPoint> lcp, points()) { // Serialize LidarControlPoint QJsonObject pointObject; pointObject["id"] = lcp->GetId(); pointObject["range"] = lcp->range(); pointObject["sigmaRange"] = lcp->sigmaRange(); pointObject["time"] = lcp->time().Et(); // Serialize the lat/lon/radius (AprioriSurfacePoint) SurfacePoint aprioriSurfacePoint = lcp->GetAprioriSurfacePoint(); pointObject["latitude"] = aprioriSurfacePoint.GetLatitude().planetocentric(Angle::Units::Degrees); pointObject["longitude"] = aprioriSurfacePoint.GetLongitude().positiveEast(Angle::Units::Degrees); pointObject["radius"] = aprioriSurfacePoint.GetLocalRadius().kilometers(); QJsonArray measureArray; // Serialize the ControlMeasures it contains foreach (ControlMeasure *measure, lcp->getMeasures()) { // Serialize ControlMeasure QJsonObject measureObject; measureObject["line"] = measure->GetLine(); measureObject["sample"] = measure->GetSample(); measureObject["serialNumber"] = measure->GetCubeSerialNumber(); measureArray.append(measureObject); } // Add the ControlMeasures to the LidarControlPoint pointObject["measures"] = measureArray; pointArray.append(pointObject); } // Add the LidarControlPoints to the LidarData lidarDataObject["points"] = pointArray; // Write the JSON to the file QJsonDocument lidarDataDoc(lidarDataObject); saveFile.write(lidarDataDoc.toJson()); } } Loading
isis/src/base/objs/LidarData/LidarData.cpp +58 −1 Original line number Diff line number Diff line #include "LidarData.h" #include <QFile> #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> #include <QList> #include <QSharedPointer> #include "Angle.h" #include "Distance.h" #include "FileName.h" #include "IException.h" #include "Latitude.h" #include "LidarControlPoint.h" #include "Longitude.h" #include "SurfacePoint.h" namespace Isis { Loading Loading @@ -64,6 +74,53 @@ namespace Isis { * @param FileName outputFile Name of the file to write to. */ void LidarData::write(FileName outputFile) { // Set up the output file QFile saveFile(outputFile.expanded()); if (!saveFile.open(QIODevice::WriteOnly)) { QString msg("Could not open " + saveFile.fileName()); throw IException(IException::User, msg, _FILEINFO_); } // Serialize LidarData QJsonObject lidarDataObject; QJsonArray pointArray; // Serialize the LidarControlPoints it contains foreach (QSharedPointer<LidarControlPoint> lcp, points()) { // Serialize LidarControlPoint QJsonObject pointObject; pointObject["id"] = lcp->GetId(); pointObject["range"] = lcp->range(); pointObject["sigmaRange"] = lcp->sigmaRange(); pointObject["time"] = lcp->time().Et(); // Serialize the lat/lon/radius (AprioriSurfacePoint) SurfacePoint aprioriSurfacePoint = lcp->GetAprioriSurfacePoint(); pointObject["latitude"] = aprioriSurfacePoint.GetLatitude().planetocentric(Angle::Units::Degrees); pointObject["longitude"] = aprioriSurfacePoint.GetLongitude().positiveEast(Angle::Units::Degrees); pointObject["radius"] = aprioriSurfacePoint.GetLocalRadius().kilometers(); QJsonArray measureArray; // Serialize the ControlMeasures it contains foreach (ControlMeasure *measure, lcp->getMeasures()) { // Serialize ControlMeasure QJsonObject measureObject; measureObject["line"] = measure->GetLine(); measureObject["sample"] = measure->GetSample(); measureObject["serialNumber"] = measure->GetCubeSerialNumber(); measureArray.append(measureObject); } // Add the ControlMeasures to the LidarControlPoint pointObject["measures"] = measureArray; pointArray.append(pointObject); } // Add the LidarControlPoints to the LidarData lidarDataObject["points"] = pointArray; // Write the JSON to the file QJsonDocument lidarDataDoc(lidarDataObject); saveFile.write(lidarDataDoc.toJson()); } }