/// <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();
            }
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        /// <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);
        }