Commit cb01231b authored by Makayla Shepherd's avatar Makayla Shepherd
Browse files

Added the start of the ingestion app and modified LidarControlPoint to behave...

Added the start of the ingestion app and modified LidarControlPoint to behave more like ControlPoint.
parent 94443343
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -20,10 +20,10 @@ namespace Isis {
   * @param range The range of the point.
   * @param sigmaRange The sigmas od the range.
   */
  LidarControlPoint::LidarControlPoint(iTime time, double range, double sigmaRange) {
    m_time = time;
    m_range = range;
    m_sigmaRange = sigmaRange;
  LidarControlPoint::LidarControlPoint() {
    m_time = iTime();
    m_range = NULL;
    m_sigmaRange = NULL;
  }
  
  
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ namespace Isis {
    
  public:

    LidarControlPoint(iTime time, double range, double sigmaRange);
    LidarControlPoint();
    
    ~LidarControlPoint();
    
+74 −16
Original line number Diff line number Diff line
#include "Isis.h"

//ISIS libraries
#include <QString>

#include "Angle.h"
#include "Camera.h"
#include "CSVReader.h"
#include "Cube.h"
#include "Distance.h"
#include "FileName.h"
#include "IException.h"
#include "iTime.h"
#include "Latitude.h"
#include "LidarControlPoint.h"
#include "LidarData.h"
#include "Longitude.h"
#include "UserInterface.h"

//STD libraries


//QT libraries
#include <QByteArray>
#include <QDebug>
#include <QFile>
#include <QRegExp>
#include <QString>
#include <QStringList>
#include <QTextStream>


using namespace std;
using namespace Isis;


void fetchCSVData(FileName &csvFile );
struct LidarCube {
  FileName name;
  QString sn;
  iTime startTime;
  iTime endTime;
}


void IsisMain() {

  UserInterface &ui = Application::GetUserInterface();
  FileName dataFile = ui.GetFileName("FROM");
  FileName cubeList = ui.GetFileName("CUBES");
  SerialNumberList cubeList = SerialNumberList(ui.GetFileName("FROM2"));
  FileName output = ui.GetFileName("TO");

  QList<LidarCube> images;
  
  for (i = 0; i < cubeList.size(); i++) {
    LidarCube lidarCube;
    QString serialNumber = cubeList.serialNumber(i);
    FileName fileName = FileName(cubeList.fileName(serialNumber));
    Cube cube(fileName);
    
    lidarCube.name = fileName;
    lidarCube.sn = serialNumber;
    std::pair< double, double> startEndTime = cube.camera().StartEndEphemerisTimes();
    lidarCube.startTime = iTime(startEndTime.first);
    lidarCube.endTime = iTime(startEndTime.second);
    
    images.append(lidarCube);
  }
  
  CSVReader lidarData(dataFile.expanded(), true, 1);
  LidarData lidarData();
  
  for (i = 0; i < lidarDataFile.size(); i++) {
    CSVReader::CSVAxis row = lidarDataFile.getRow(i);
    
    iTime time(row[0].toDouble());
    Latitude lat(row[1].toDouble(), Angle::Units::Degrees);
    Longitude lon(row[2].toDouble(), Angle::Units::Degrees);
    Distance radius(row[3].toDouble(), Distance::Units::Kilometers);
    double range = row[4].toDouble();
    QString id = "POINT" + QString::number(i);
    double sigma = 0; //TODO figure out how/where to calculate this
//     QString quality = row[]; //TODO figure out how/where to find this value
    
    LidarControlPoint lidarPoint();
    lidarPoint.SetId(id);
    lidarPoint.setTime(time);
    lidarPoint.setRange(range);
    lidarPoint.setSigmaRadius(sigma);
    lidarPoint.SetAprioriSurfacePoint(SurfacePoint(lat, lon, radius));
    
    for (j = 0; j < images.size(); j++) {
      if (images[j].startTime <= time || time <= images[j].endTime) {
        Cube cube(images[j].name);
        Camera camera = cube.camera();
        camera.SetGround(lat, lon);
        
        ControlMeasure measure();
        measure.SetCoordinate(camera.Line(), camera.Sample()); 
        measure.SetCubeSerialNumber(images[j].sn);
        
        lidarPoint.Add(measure);
      }
    }
    
    lidarData.insert(lidarPoint);
  }

  return;
}