/// <summary> /// Model Transformation Data TransmissionTo Data Processing with Kalman object /// </summary> /// <param name="model"></param> /// <returns></returns> public DataProcessingModel DataTransmissionModelToDataProcessingModelKalman(DataTransmissionModel model) { var dataProcessingModel = new DataProcessingModel() { Altitude = model.Altitude, SenderId = model.SenderId, Flight = model.Flight, Latitude = model.Latitude, Longitude = model.Longitude, IsPredicted = model.IsPredicted, Groundspeed = model.Groundspeed, Timestamp = model.Timestamp, Track = model.Track, AltTimestamp = model.AltTimestamp, AltitudeUnit = model.AltitudeUnit, DeviationAlt = model.DeviationAlt, DeviationLat = model.DeviationLat, DeviationLong = model.DeviationLong, Flarm = model.Flarm, GroundSpeedUnit = model.GroundSpeedUnit, LatTimestamp = model.LatTimestamp, Longimestamp = model.LatTimestamp, Prefix = model.Prefix, UTC = model.UTC, UTC_Predicted = model.UTC, KalmanRunner = new KalmanRunner() }; return(dataProcessingModel); }
/// <summary> /// /// </summary> /// <returns></returns> public static List <DataTransmissionModel> GetDataAllDataFromDataBase() { var flugDataLst = new List <DataTransmissionModel>(); using (var connection = new SQLiteConnection(Constants.DATA_BASE_CONNECTION_STRING)) { using (var command = new SQLiteCommand( "Select * from Flights", connection)) { connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { var flugData = new DataTransmissionModel { Altitude = ParseStringValueToInt(reader["Altitude"]), Flight = reader["Flight"].ToString(), Groundspeed = ParseStringValueToInt(reader["Groundspeed"]), Track = ParseStringValueToInt(reader["Track"]), Latitude = Convert.ToDouble(reader["Latitude"]), Longitude = Convert.ToDouble(reader["Longitude"]), Timestamp = Convert.ToDateTime(reader["Timestamp"].ToString() ?? null), SenderId = reader["SenderId"].ToString() }; flugDataLst.Add(flugData); } } } return(flugDataLst); }
/// <summary> /// Get Flight Data by Flight name and DateTime /// </summary> /// <param name="flight"></param> /// <param name="time"></param> /// <returns></returns> public static List <DataTransmissionModel> GetDataByFlightIdAndTimeStamp(string flight, DateTime time) { var flugDataLst = new List <DataTransmissionModel>(); using (var connection = new SQLiteConnection(Constants.DATA_BASE_CONNECTION_STRING)) { using (var command = new SQLiteCommand( "Select * from Flights where Flight = @Flight and TimeStamp=@TimeStamp", connection)) { command.Parameters.Add(new SQLiteParameter("@Flight", flight)); command.Parameters.Add(new SQLiteParameter("@TimeStamp", time)); connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { var flugData = new DataTransmissionModel { Altitude = Convert.ToInt32(reader["Altitude"]), Flight = reader["Flight"].ToString(), Groundspeed = Convert.ToInt32(reader["Groundspeed"]), Track = Convert.ToInt32(reader["Track"]), Latitude = Convert.ToDouble(reader["Latitude"]), Longitude = Convert.ToDouble(reader["Longitude"]), Timestamp = Convert.ToDateTime(reader["Timestamp"]), SenderId = reader["SenderId"].ToString() }; flugDataLst.Add(flugData); } } } var result = from dataTransmissionModel in flugDataLst group dataTransmissionModel by dataTransmissionModel.Altitude into flightGroup select new { AverageAltitude = flightGroup.Average(x => x.Altitude), AverageLatitude = flightGroup.Average(x => x.Latitude), AverageLongitude = flightGroup.Average(x => x.Longitude), }; return(flugDataLst); }
/// <summary> /// Insert operation for Flug Data /// </summary> /// <exception cref="Exception"></exception> public static void InsertFlugData(DataTransmissionModel flugData) { var con = new SQLiteConnection(Constants.DATA_BASE_CONNECTION_STRING); try { con.Open(); var cmd = new SQLiteCommand("INSERT INTO Flights (Timestamp,SenderId,Groundspeed,Latitude,Longitude,Flight,Track,Altitude,UTC,DeviationLat,DeviationLong,DeviationAlt,AltTimestamp,LatTimestamp,LongTimestamp,Covariance,IsPredicted)VALUES(@Timestamp,@SenderId,@Groundspeed,@Latitude,@Longitude,@Flight,@Track,@Altitude,@UTC,@DeviationLat,@DeviationLong,@DeviationAlt,@AltTimestamp,@LatTimestamp,@LongTimestamp,@Covariance,@IsPredicted)", con); cmd.Parameters.AddWithValue("@Timestamp", flugData.Timestamp ?? DateTime.Now); cmd.Parameters.AddWithValue("@SenderId", flugData.SenderId); cmd.Parameters.AddWithValue("@Groundspeed", flugData.Groundspeed ?? 0); cmd.Parameters.AddWithValue("@Latitude", flugData.Latitude ?? 0); cmd.Parameters.AddWithValue("@Longitude", flugData.Longitude ?? 0); cmd.Parameters.AddWithValue("@Flight", flugData.Flight ?? "Null"); cmd.Parameters.AddWithValue("@Track", flugData.Track ?? 0); cmd.Parameters.AddWithValue("@Altitude", flugData.Altitude ?? 0); cmd.Parameters.AddWithValue("@UTC", flugData.UTC ?? DateTime.Now); cmd.Parameters.AddWithValue("@DeviationLat", flugData.DeviationLat ?? 0); cmd.Parameters.AddWithValue("@DeviationLong", flugData.DeviationLong ?? 0); cmd.Parameters.AddWithValue("@DeviationAlt", flugData.DeviationAlt ?? 0); cmd.Parameters.AddWithValue("@AltTimestamp", flugData.AltTimestamp ?? DateTime.Now); cmd.Parameters.AddWithValue("@LatTimestamp", flugData.LatTimestamp ?? DateTime.Now); cmd.Parameters.AddWithValue("@Longimestamp", flugData.LongTimestamp ?? DateTime.Now); cmd.Parameters.AddWithValue("@IsPredicted", flugData.IsPredicted); cmd.Parameters.AddWithValue("@Covariance", flugData.Covariance ?? "Null"); int count = cmd.ExecuteNonQuery(); } catch (Exception ex) { //Exceptions are typically logged at the ERROR level Constants.LOGGER.Error(ex); } finally { con.Close(); } }
public void RegisterData(DataTransmissionModel received) { try { var newReceivedData = new DataTransmissionModel { Flight = received.Flight, Track = received.Track, Altitude = received.Altitude, Latitude = received.Latitude, Longitude = received.Longitude, Prefix = received.Prefix, SenderId = received.SenderId, Groundspeed = received.Groundspeed, Timestamp = received.Timestamp, UTC = received.UTC, DeviationAlt = received.DeviationAlt, DeviationLat = received.DeviationLat, DeviationLong = received.DeviationLong, AltTimestamp = received.AltTimestamp, LatTimestamp = received.LatTimestamp, LongTimestamp = received.LongTimestamp, Flarm = received.Flarm, }; //Create CSV Model var cw = new CsvWriter <DataTransmissionModel>(); //Write Model into Csv File cw.WriteModelToCsvFile(newReceivedData, Constants.DATA_RECEIVED_FILE_PATH); //Add Data To registration Class (Data Dictionary) DataTransmissionOperations.GetInstance().RegisterData(newReceivedData); } catch (Exception e) { //Exceptions are typically logged at the ERROR level Constants.LOGGER.Error(e); throw; } }
/// <summary> /// Add data to Dictionary /// </summary> /// <param name="receivedData"></param> public void RegisterData(DataTransmissionModel receivedData) { DataProcessingModel dataProcessingModel; var updateTimes = 1; if (DataContainers.GetInstance().DATA_PROCESSING_CONTAINER.ContainsKey(receivedData.Flight)) { dataProcessingModel = DataContainers.GetInstance().DATA_PROCESSING_CONTAINER[receivedData.Flight]; dataProcessingModel = DataProcessingOperations.DataTransmissionModelToDataProcessingModel(dataProcessingModel, receivedData); DataContainers.GetInstance().DATA_RECEIVED_CONTAINER.Clear(); } else { DataContainers.GetInstance().DATA_PROCESSING_CONTAINER.Add(receivedData.Flight, DataProcessingOperations.GetInstance().DataTransmissionModelToDataProcessingModelKalman(receivedData)); dataProcessingModel = DataContainers.GetInstance().DATA_PROCESSING_CONTAINER[receivedData.Flight]; updateTimes = 10; } if (!IsPositionNullOrZero(receivedData.Altitude) && !IsPositionNullOrZero(receivedData.Latitude) && !IsPositionNullOrZero(receivedData.Longitude)) { var cartesianCoordinates = new CartesianCoordinates3D( receivedData.Altitude.Value, receivedData.Longitude.Value, receivedData.Latitude.Value ); for (var i = 0; i < updateTimes; i++) { cartesianCoordinates = dataProcessingModel.KalmanRunner.Update(cartesianCoordinates); } dataProcessingModel.Altitude = cartesianCoordinates.Altitude; dataProcessingModel.Longitude = cartesianCoordinates.Longitude; dataProcessingModel.Latitude = cartesianCoordinates.Latitude; dataProcessingModel.UTC = DateTime.UtcNow; } }
/// <summary> /// Get Flight from Database /// </summary> /// <param name="flight"></param> /// <returns></returns> public static List <DataTransmissionModel> GetDataByFlightId(string flight) { var flugDataLst = new List <DataTransmissionModel>(); using (var connection = new SQLiteConnection(Constants.DATA_BASE_CONNECTION_STRING)) { using (var command = new SQLiteCommand( "Select * from Flights where Flight = @Flight", connection)) { command.Parameters.Add(new SQLiteParameter("@Flight", flight)); connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { var flugData = new DataTransmissionModel { Altitude = Convert.ToInt32(reader["Altitude"]), Flight = reader["Flight"].ToString(), Groundspeed = Convert.ToInt32(reader["Groundspeed"]), Track = Convert.ToInt32(reader["Track"]), Latitude = Convert.ToInt32(reader["Latitude"]), Longitude = Convert.ToInt32(reader["Longitude"]), Timestamp = Convert.ToDateTime(reader["Timestamp"].ToString()), SenderId = reader["SenderId"].ToString() }; flugDataLst.Add(flugData); } } } return(flugDataLst); }
/// <summary> /// /// </summary> /// <param name="oldDataProcessingModel"></param> /// <param name="dataTransmissionModel"></param> /// <returns></returns> public static DataProcessingModel DataTransmissionModelToDataProcessingModel(DataProcessingModel oldDataProcessingModel, DataTransmissionModel dataTransmissionModel) { var dataProcessingModel = new DataProcessingModel() { Altitude = dataTransmissionModel.Altitude == 0? oldDataProcessingModel.Altitude:dataTransmissionModel.Altitude, SenderId = dataTransmissionModel.SenderId, Flight = dataTransmissionModel.Flight, Latitude = dataTransmissionModel.Latitude == 0? oldDataProcessingModel.Latitude:dataTransmissionModel.Latitude, Longitude = dataTransmissionModel.Longitude == 0? oldDataProcessingModel.Longitude:dataTransmissionModel.Longitude, IsPredicted = dataTransmissionModel.IsPredicted, Groundspeed = dataTransmissionModel.Groundspeed, Timestamp = dataTransmissionModel.Timestamp, Track = dataTransmissionModel.Track, AltTimestamp = dataTransmissionModel.AltTimestamp, AltitudeUnit = dataTransmissionModel.AltitudeUnit, DeviationAlt = dataTransmissionModel.DeviationAlt, DeviationLat = dataTransmissionModel.DeviationLat, DeviationLong = dataTransmissionModel.DeviationLong, Flarm = dataTransmissionModel.Flarm, GroundSpeedUnit = dataTransmissionModel.GroundSpeedUnit, LatTimestamp = dataTransmissionModel.LatTimestamp, Longimestamp = dataTransmissionModel.LatTimestamp, Prefix = dataTransmissionModel.Prefix, UTC = dataTransmissionModel.UTC, UTC_Predicted = dataTransmissionModel.UTC, KalmanRunner = oldDataProcessingModel.KalmanRunner }; return(dataProcessingModel); }