public static List <UavLog> FilterUavlosAndSort(List <UavLog> uavLogs) { uavLogs.Sort((x, y) => DateTime.Compare(x.DateTime, y.DateTime)); UavLog uavLogFirst = uavLogs.FirstOrDefault(); var years = uavLogs.Select(l => l.DateTime.Year); var distinct = years.Distinct(); var dictionary = new Dictionary <int, int>(); foreach (var year in distinct) { var count = uavLogs.Count(l => l.DateTime.Year == year); dictionary.Add(year, count); } var max = dictionary.Aggregate((l, r) => l.Value > r.Value ? l : r).Key; var maxyearLogs = uavLogs.Where(l => l.DateTime.Year == max).ToList(); maxyearLogs.Sort((x, y) => DateTime.Compare(x.DateTime, y.DateTime)); return(maxyearLogs); }
public static Dictionary <string, int> GetDjiHeaderDictionary(string[] headres) { var djiLogs = UavLog.GetDJIMappingProperty(); var headerDictionary = new Dictionary <string, int>(); for (var i = 0; i < headres.Count(); i++) { foreach (var djilog in djiLogs) { if (headres[i] == djilog.Value) { headerDictionary.Add(djilog.Key, i); } } } return(headerDictionary); }
public static List <UavLog> ConvertSrtToUavLog(List <DjiSrtVideoLogModel> djiSrtVideoLogModels) { List <UavLog> uavLogs = new List <UavLog>(); foreach (var djiSrt in djiSrtVideoLogModels) { var uavLog = new UavLog() { UavLatititud = djiSrt.UavLatitud, UavLongitud = djiSrt.UavLongitud, VideoRecordTime = Helpers.ConvertMilisecondsToHMSmm(djiSrt.StartLog.TotalMilliseconds), FlyTime = djiSrt.DateTimeLog.Minute.ToString(), DateTime = djiSrt.DateTimeLog }; uavLogs.Add(uavLog); } return(uavLogs); }
public static UavLog GetUavLogFromVideoTimeStamp(TimeSpan imageTimeStamp, List <UavLog> uavLogs) { UavLog uavLog = null; if (imageTimeStamp != TimeSpan.Zero) { try { var sortedUavLogs = FilterUavlosAndSort(uavLogs); var videoLenght = GetVideoLenghtInMilliseconds(sortedUavLogs); var videoLengh = ConvertMilisecondsToHMSmm(videoLenght); var milli = imageTimeStamp.TotalMilliseconds; var videoLengh2 = ConvertMilisecondsToHMSmm(milli); if (imageTimeStamp.TotalMilliseconds < videoLenght) { var firstVideoLog = GetfirstLog(uavLogs); var photoTimeInVideo = firstVideoLog.DateTime + imageTimeStamp; //https://stackoverflow.com/a/7016646 var nearestDiff = uavLogs.Min(log => Math.Abs((log.DateTime - photoTimeInVideo).Ticks)); var nearest = uavLogs.First(log => Math.Abs((log.DateTime - photoTimeInVideo).Ticks) == nearestDiff); //https://stackoverflow.com/a/4075380 var uavLogIndex = uavLogs.Select((value, index) => new { value, index }) .First(log => Math.Abs((log.value.DateTime - photoTimeInVideo).Ticks) == nearestDiff); uavLog = uavLogIndex.value; var LatLong = $"{nearest.UavLatititud},{nearest.UavLongitud}"; //"59.409424,9.132055" var dif1 = ConvertMilisecondsToHMSmm(TimeSpan.FromTicks(nearestDiff).TotalMilliseconds); } } catch { //return null; } } return(uavLog); }
public static UavLog GetUavLog(string[] fields, Dictionary <string, int> headers, int rowNumber) { var uavLog = new UavLog(); var djiLog = UavLog.GetDJIMappingProperty(); //uavLog.RowNumber = rowNumber; uavLog.FlyTime = fields[headers["FlyTime"]]; uavLog.UavLatititud = fields[headers["UavLatititud"]]; uavLog.UavLongitud = fields[headers["UavLongitud"]]; uavLog.VideoRecordTime = fields[headers["VideoRecordTime"]]; var pointDateTime = fields[headers["DateTime"]]; DateTime dateTime; var formatStrings = new string[] { "yyyy/MM/dd HH:mm:ss.fff", "yyyy-MM-dd hh:mm:ss", "yyyy-MM-dd", "mm:ss.f", "MM-dd-yyyy hh:mm:ss.fff tt", "dd-MM-yyyy hh:mm:ss.fff tt", "dd/MM/yyyy hh:mm:ss.fff" }; CultureInfo enUS = new CultureInfo("en-US"); if (DateTime.TryParseExact(pointDateTime, formatStrings, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { uavLog.DateTime = dateTime; } return(uavLog); }