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);
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
 /// <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;
 }