/// <summary> /// Providing conversrion for the single stream constructor /// </summary> /// <param name="dataStream"></param> /// <returns></returns> private static List <VelodyneDataStream> ToDataStreamList(VelodyneDataStream dataStream) { List <VelodyneDataStream> velodyneDataStreams = new List <VelodyneDataStream>(); velodyneDataStreams.Add(dataStream); return(velodyneDataStreams); }
private void dataStreamList_DoubleClick(object sender, EventArgs e) { DataStream dataStream = (DataStream)dataStreamList.SelectedItem; if (dataStream.DataLines.Count == 0) { Logger.WriteLineWarning("No file for " + dataStream.ShortName); MessageBox.Show("No file for " + dataStream.ShortName, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (dataStreamList.SelectedItem is VideoDataStream) { VideoDataStream videoDataStream = dataStreamList.SelectedItem as VideoDataStream; VideoStreamWnd wnd = new VideoStreamWnd(videoDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } else if (dataStreamList.SelectedItem is ImageDataStream) { ImageDataStream imageDataStream = dataStreamList.SelectedItem as ImageDataStream; ImageStreamWnd wnd = new ImageStreamWnd(imageDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } else if (dataStreamList.SelectedItem is VelodyneDataStream) { VelodyneDataStream velodyneDataStream = dataStreamList.SelectedItem as VelodyneDataStream; if (velodyneDataStream.HasIndexedFiles() == false) { DialogResult result = MessageBox.Show("No index file for " + dataStream.ShortName + "! Do you want to create index file?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { return; } ConvertVelodyneDataStream(velodyneDataStream); } else { VelodyneStreamWnd wnd = new VelodyneStreamWnd(velodyneDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } } else if (dataStreamList.SelectedItem is GPSDataStream) { GPSDataStream gpsDataStream = dataStreamList.SelectedItem as GPSDataStream; GPSDataStreamWnd wnd = new GPSDataStreamWnd(gpsDataStream, Logger); wnd.MdiParent = this.MdiParent; wnd.Show(); } }
/// <summary> /// Convert Velodyne data stream into internal format /// </summary> /// <param name="velodyneDataStream"></param> private void ConvertVelodyneDataStream(VelodyneDataStream velodyneDataStream) { MainForm form = (MainForm)this.MdiParent; ProgressBarWnd wnd = new ProgressBarWnd(); wnd.Text = "Conversion: " + velodyneDataStream.ShortName; // create multiple logger List <ILogger> loggers = new List <ILogger>(); loggers.Add(Logger); loggers.Add(wnd); MultipleLogger logger = new MultipleLogger(loggers); wnd.Worker.DoWork += delegate(object senderWorker, DoWorkEventArgs eWorker) { foreach (VelodyneDataLine dataLine in velodyneDataStream.DataLines) { VelodyneConverter converter = VelodyneConverter.Create(form.Project.Folder + "\\" + velodyneDataStream.SubFolder + "\\" + dataLine.PcapLocation); converter.ProgressReport += delegate(object senderReport, ProgressReportEventArgs argsReport) { logger.WriteLineInfo(argsReport.CurrentDataTime.ToString("yyy-MM-dd hh:mm:ss") + " " + argsReport.ReadBytes / 1000000 + " MB " + argsReport.Precentage.ToString("0.00") + "%" + Environment.NewLine); logger.WriteProgress(argsReport.Precentage); }; try { converter.Convert(wnd.CancelTokenSource.Token); } catch (OperationCanceledException) { // TODO: clean up files! } catch (Exception ex) { logger.WriteLineInfo("Error occured: " + ex.Message); } } }; wnd.Worker.RunWorkerCompleted += delegate(object senderWorker, RunWorkerCompletedEventArgs eWorker) { logger.WriteLineInfo("Conversion done."); logger.WriteProgress(100); }; wnd.ShowDialog(); }
public static Project Load(String folder, ILogger logger = null, CancellationToken cancelletionToken = default(CancellationToken)) { var stream = File.OpenRead(folder + "\\" + MetadataFolder + "\\project.bin"); var formatter = new BinaryFormatter(); Project project = (Project)formatter.Deserialize(stream); stream.Close(); project.Folder = folder; project.CreateFolderIfNotExists(MetadataFolder); project.CreateFolderIfNotExists(GeorefFolder); project.CreateFolderIfNotExists(LiDARFrameFolder); // update transformation matrices for sensors foreach (DataStream dataStream in project.DataStreams) { cancelletionToken.ThrowIfCancellationRequested(); if (dataStream is VelodyneDataStream) { var filePath = folder + "\\" + GeorefFolder + "\\" + dataStream.ShortName + "_Tp.txt"; if (File.Exists(filePath)) { VelodyneDataStream velodyneDataStream = dataStream as VelodyneDataStream; CsvReader reader = new CsvReader(filePath, false); var Tp = reader.ToMatrix(); velodyneDataStream.Tp = Tp; logger?.WriteLineInfo(dataStream.ShortName + ": sensor-platform transformation matrix file is loaded!"); } else { logger?.WriteLineWarning(dataStream.ShortName + ": sensor-platform transformation matrix file does not exist: " + filePath); } } } return(project); }
public VeloFeature(VelodyneDataStream dataStream) : this() { this.DataStream = dataStream; }
public VelodyneStreamWnd(VelodyneDataStream dataStream, ILogger logger) : this(ToDataStreamList(dataStream), logger) { }