public void ShowTrack(List<ProccessedTrack> pTracks, int start, int end, int skip) { this.skip = skip; this.start = start; this.end = end; Track track = new Track(); foreach (ProccessedTrackItem pi in pTracks[0].ProccessedTrackItems) { track.AddTrackItem(new TrackItem(pi.OriginalLatitude, pi.OriginalLongitude, pi.MeasureDate)); } FormRoutesInScreenSetting friss = new FormRoutesInScreenSetting(track, pTracks); friss.ShowDialog(); RouteManager manager = friss.RouteManager; StringBuilder sb = new StringBuilder(File.ReadAllText(@"DisplayPlugins\HTML\start.txt")); foreach (Route route in manager.Routes) { sb.Append(CreateFragmentFromRoute(route)); } sb.AppendLine("map.setView([" + pTracks[0].ProccessedTrackItems[start].OriginalLatitude.ToString().Replace(',', '.') + "," + pTracks[0].ProccessedTrackItems[start].OriginalLongitude.ToString().Replace(',','.') + "]);"); sb.Append(File.ReadAllText(@"DisplayPlugins\HTML\end.txt")); String fileName = @"DisplayPlugins\HTML\temp.html"; File.WriteAllText(fileName, sb.ToString().Replace("<title></title>","<title>Сравнение моделей</title>")); Process.Start(fileName); }
/// <summary> /// Обработка набора данных в трек /// </summary> /// <param name="dataSet">набор данных</param> /// <returns>Трек</returns> private static Track ParseDataSet(DataSet dataSet, bool hasHeader) { DataTable dataTable = dataSet.Tables[0]; DataRow[] rows = dataTable.Select(); Track res = new Track(); String latCol = null; String lonCol = null; String dateCol = null; String timeCol = null; if (hasHeader) { latCol = "Latitude"; lonCol = "Longitude"; int i = 0; while (i < dataTable.Columns.Count && !dataTable.Columns[i].ColumnName.ToLower().Contains("date")) i++; if (i < dataTable.Columns.Count) dateCol = dataTable.Columns[i].ColumnName; else throw new Exception("Неверный формат файла"); i = 0; while (i < dataTable.Columns.Count && !dataTable.Columns[i].ColumnName.ToLower().Contains("time")) i++; if (i < dataTable.Columns.Count) timeCol = dataTable.Columns[i].ColumnName; else throw new Exception("Неверный формат файла"); } else { for (int i = 0; i < dataTable.Columns.Count; i++) { String cellVal = dataTable.Rows[0][i].ToString(); double testTouble; DateTime testDt; if (double.TryParse(cellVal.Replace(".", ","), out testTouble)) { if (latCol == null) latCol = dataTable.Columns[i].ColumnName; else if (lonCol == null) lonCol = dataTable.Columns[i].ColumnName; } else if (DateTime.TryParse(cellVal, out testDt)) { if (dateCol == null) dateCol = dataTable.Columns[i].ColumnName; else if (timeCol == null) timeCol = dataTable.Columns[i].ColumnName; } } } foreach (DataRow row in rows) { double lat = row[latCol] is double ? (double)row[latCol] : double.Parse((row[latCol] as String).Replace('.', ',')); double lon = row[lonCol] is double ? (double)row[lonCol] : double.Parse((row[lonCol] as String).Replace('.', ',')); DateTime date = DateTime.Now; if (row[dateCol] is DateTime) { date = (DateTime)row[dateCol]; DateTime time = (DateTime)row[timeCol]; date = date.AddHours(time.Hour); date = date.AddMinutes(time.Minute); date = date.AddSeconds(time.Second); } else { date = DateTime.ParseExact(row[dateCol].ToString(), "MM.dd.yyyy", null); DateTime time = DateTime.Parse(row[timeCol].ToString()); date = date.AddHours(time.Hour); date = date.AddMinutes(time.Minute); date = date.AddSeconds(time.Second); } TrackItem tempTrackItem = new TrackItem(lat, lon, date); res.AddTrackItem(tempTrackItem); } return res; }
/// <summary> /// Обработать таблицу с треком /// </summary> /// <param name="dataTable">Таблица</param> /// <returns>Трек</returns> private Track ParseDataTable(DataTable dataTable) { DataRow[] dataRows = dataTable.Select(); Track track = new Track(); foreach (DataRow row in dataRows) { double lat = (double)row[1]; double lon = (double)row[2]; DateTime date = (DateTime)row[3]; TrackItem temp = new TrackItem(lat, lon, date); track.AddTrackItem(temp); } track.CalculateVectors(); return track; }