Пример #1
0
        /// <summary>
        /// This method is used to store in a list all TLE parameters for each epoch time
        ///
        /// Each entry of the return list is a TLE_Sat variable with its parameters defined except for the name (which is not necessary as every entry is related to the same satellite)
        /// </summary>
        /// <param name="data_raw">List of array of bytes with every TLE (its two lines) for each entry</param>
        /// <returns>List of TLE_Sat containing processed data</returns>
        public static List <TLE_Sat> TLE_Lines_DataExtractor(List <byte[]> data_raw)
        {
            try
            {
                List <TLE_Sat> TLE_individualSat_List = new List <TLE_Sat>();

                foreach (byte[] byte_arr in data_raw)
                {
                    TLE_Sat  _TLE_sat = new TLE_Sat();
                    DateTime epoch    = new DateTime();

                    // First row
                    _TLE_sat.Sat_Number             = Convert.ToUInt32((System.Text.Encoding.Default.GetString(byte_arr)).Substring(2, 5));
                    _TLE_sat.Sat_Classification     = (System.Text.Encoding.Default.GetString(byte_arr)).Substring(7, 1);
                    _TLE_sat.Sat_IntDesignator      = (System.Text.Encoding.Default.GetString(byte_arr)).Substring(9, 8);
                    _TLE_sat.Sat_ElementSetEpoch    = (System.Text.Encoding.Default.GetString(byte_arr)).Substring(18, 14);
                    _TLE_sat.Sat_FirstMeanMotionDer = Convert.ToDouble((System.Text.Encoding.Default.GetString(byte_arr)).Substring(33, 10), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_SecMeanMotionDer   = TLE_Data_AuxMethods.GetDoubleFromScientificNotation((System.Text.Encoding.Default.GetString(byte_arr)).Substring(44, 8));
                    _TLE_sat.Sat_BSTARDrag          = TLE_Data_AuxMethods.GetDoubleFromScientificNotation((System.Text.Encoding.Default.GetString(byte_arr)).Substring(53, 8));
                    _TLE_sat.Sat_SetType            = (System.Text.Encoding.Default.GetString(byte_arr)).Substring(62, 1);
                    _TLE_sat.Sat_SetNumber          = (System.Text.Encoding.Default.GetString(byte_arr)).Substring(64, 4);

                    _TLE_sat.Sat_LaunchYear   = TLE_Data_AuxMethods.GetLaunchYearFromDesignator(_TLE_sat.Sat_IntDesignator);
                    _TLE_sat.Sat_LaunchNumber = TLE_Data_AuxMethods.GetLaunchNumberFromDesignator(_TLE_sat.Sat_IntDesignator);
                    _TLE_sat.Sat_LaunchPiece  = TLE_Data_AuxMethods.GetLaunchPieceFromDesignator(_TLE_sat.Sat_IntDesignator);
                    _TLE_sat.Sat_EpochYear    = TLE_Data_AuxMethods.GetYearFromEpoch(_TLE_sat.Sat_ElementSetEpoch);
                    _TLE_sat.Sat_EpochDay     = TLE_Data_AuxMethods.GetDayFromEpoch(_TLE_sat.Sat_ElementSetEpoch);
                    if (TLE_Data_AuxMethods.GetDateTimeFromEpoch(_TLE_sat.Sat_ElementSetEpoch, out epoch))
                    {
                        _TLE_sat.Sat_EpochDateTime = epoch;
                    }

                    // Second row
                    _TLE_sat.Sat_Inclination     = Convert.ToDouble((System.Text.Encoding.Default.GetString(byte_arr)).Substring(79, 8), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_RightAscension  = Convert.ToDouble((System.Text.Encoding.Default.GetString(byte_arr)).Substring(88, 8), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_Eccentricity    = Convert.ToDouble(("0." + (System.Text.Encoding.Default.GetString(byte_arr)).Substring(97, 7)), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_ArgumentPerigee = Convert.ToDouble((System.Text.Encoding.Default.GetString(byte_arr)).Substring(105, 8), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_MeanAnomaly     = Convert.ToDouble((System.Text.Encoding.Default.GetString(byte_arr)).Substring(114, 8), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_MeanMotion      = Convert.ToDouble((System.Text.Encoding.Default.GetString(byte_arr)).Substring(123, 11), System.Globalization.CultureInfo.InvariantCulture);
                    _TLE_sat.Sat_RevNumber       = Convert.ToUInt32((System.Text.Encoding.Default.GetString(byte_arr)).Substring(134, 5));

                    // Post-processed data
                    _TLE_sat.Sat_SemiAxis = TLE_Data_AuxMethods.GetSemiAxisFromPeriod(_TLE_sat.Sat_MeanMotion);
                    _TLE_sat.Sat_Perigee  = TLE_Data_AuxMethods.GetPerigee(_TLE_sat.Sat_SemiAxis, _TLE_sat.Sat_Eccentricity);
                    _TLE_sat.Sat_Apogee   = TLE_Data_AuxMethods.GetApogee(_TLE_sat.Sat_SemiAxis, _TLE_sat.Sat_Eccentricity);

                    TLE_individualSat_List.Add(_TLE_sat);
                }

                return(TLE_individualSat_List);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                return(null);
            }
        }
Пример #2
0
        /// <summary>
        /// This method is used to store in a list all processed TLE parameters for each epoch time
        ///
        /// This output list is different from the one obtained from TLE_Lines_DataExtractor in the processing. In this list, each data which is obtained from the same day is promediated, so there are no repeated parameters for the same day. This is made to make clearer all plots and get better referencing.
        /// Each entry of the return list is a TLE_Sat variable with its parameters defined except for the name (which is not necessary as every entry is related to the same satellite)
        /// </summary>
        /// <param name="data_raw">List of array of bytes with every TLE (its two lines) for each entry</param>
        ///
        ///
        /// <returns>List of TLE_Sat containing processed data</returns>
        public static List <TLE_Sat> TLE_HistoricData_Processed(List <TLE_Sat> TLE_List_raw)
        {
            try
            {
                List <TLE_Sat> TLE_individualSat_List_processed = new List <TLE_Sat>();
                List <TLE_Sat> TLE_buffer_list = new List <TLE_Sat>();
                // This variable is used to compare in case the next epoch_day is repeated
                int _epoch_day_ref = 0;
                int counter        = 0;

                // Check for repeated epoch days
                for (int i = 0; i < TLE_List_raw.Count; i++)
                {
                    // Epoch day of the current TLE_Sat in the iteration
                    int _epoch_day_current = Convert.ToInt32(Math.Floor(TLE_List_raw[i].Sat_EpochDay));
                    // Reference epoch day is the next one in the iteration
                    if (i < (TLE_List_raw.Count - 1))
                    {
                        _epoch_day_ref = Convert.ToInt32(Math.Floor(TLE_List_raw[i + 1].Sat_EpochDay));
                    }
                    if (_epoch_day_current == _epoch_day_ref && i != (TLE_List_raw.Count - 1))
                    {
                        // In this case as the current epoch day is the same as the ref one, we need to store data to promediate after that
                        TLE_buffer_list.Add(TLE_List_raw[i]);

                        counter++;
                        Debug.WriteLine("Repeticion numero: " + counter + "; con " + _epoch_day_current);
                    }
                    else
                    {
                        // In this case as the current epoch day is different from the ref one, this TLE_Sat data will be stored in the processed list
                        TLE_buffer_list.Add(TLE_List_raw[i]);
                        // Promediate data
                        TLE_Sat _TLE_processed = TLE_PromediateList_Processed(TLE_buffer_list);

                        // Add final TLE data to final list
                        TLE_individualSat_List_processed.Add(_TLE_processed);

                        // Reset buffer list
                        TLE_buffer_list.Clear();
                    }
                }

                Debug.WriteLine("Lista anterior: " + TLE_List_raw.Count + "; Lista ultima: " + TLE_individualSat_List_processed.Count);

                return(TLE_individualSat_List_processed);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                return(null);
            }
        }
Пример #3
0
        public bool GetSelectedSat_fromDataRow(DataRow input_dataRow)
        {
            try
            {
                TLE_Sat result = new TLE_Sat();

                result.Sat_Name               = input_dataRow.ItemArray[1].ToString();
                result.Sat_Number             = Convert.ToUInt32(input_dataRow.ItemArray[2]);
                result.Sat_Classification     = input_dataRow.ItemArray[3].ToString();
                result.Sat_IntDesignator      = input_dataRow.ItemArray[4].ToString();
                result.Sat_ElementSetEpoch    = input_dataRow.ItemArray[5].ToString();
                result.Sat_FirstMeanMotionDer = Convert.ToDouble(input_dataRow.ItemArray[6]);
                result.Sat_SecMeanMotionDer   = Convert.ToDouble(input_dataRow.ItemArray[7]);
                result.Sat_BSTARDrag          = Convert.ToDouble(input_dataRow.ItemArray[8]);
                result.Sat_SetType            = input_dataRow.ItemArray[9].ToString();
                result.Sat_SetNumber          = input_dataRow.ItemArray[10].ToString();
                result.Sat_Inclination        = Convert.ToDouble(input_dataRow.ItemArray[11]);
                result.Sat_RightAscension     = Convert.ToDouble(input_dataRow.ItemArray[12]);
                result.Sat_Eccentricity       = Convert.ToDouble(input_dataRow.ItemArray[13]);
                result.Sat_ArgumentPerigee    = Convert.ToDouble(input_dataRow.ItemArray[14]);
                result.Sat_MeanAnomaly        = Convert.ToDouble(input_dataRow.ItemArray[15]);
                result.Sat_MeanMotion         = Convert.ToDouble(input_dataRow.ItemArray[16]);
                result.Sat_RevNumber          = Convert.ToUInt32(input_dataRow.ItemArray[17]);
                result.Sat_LaunchYear         = Convert.ToUInt32(input_dataRow.ItemArray[18]);
                result.Sat_LaunchNumber       = Convert.ToUInt32(input_dataRow.ItemArray[19]);
                result.Sat_LaunchPiece        = input_dataRow.ItemArray[20].ToString();
                result.Sat_EpochYear          = Convert.ToUInt32(input_dataRow.ItemArray[21]);
                result.Sat_EpochDay           = Convert.ToDouble(input_dataRow.ItemArray[22]);
                result.Sat_EpochDateTime      = Convert.ToDateTime(input_dataRow.ItemArray[23]);

                result.Sat_SemiAxis = TLE_Data_AuxMethods.GetSemiAxisFromPeriod(result.Sat_MeanMotion);
                result.Sat_Perigee  = TLE_Data_AuxMethods.GetPerigee(result.Sat_SemiAxis, result.Sat_Eccentricity);
                result.Sat_Apogee   = TLE_Data_AuxMethods.GetApogee(result.Sat_SemiAxis, result.Sat_Eccentricity);

                _TLE_Sat_Selected = result;

                _SAT_SELECTED = true;
                return(true);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                return(false);
            }
        }
Пример #4
0
        public List <TLE_Sat> ParseTLEString(byte[] TLE_data)
        {
            try
            {
                // POR AHORA SE PIERDE EL ULTIMO SATELITE, POR COMO ESTA PENSADA LA RECUPERACION
                int      counter           = 0;
                int      _internal_counter = 0;
                TLE_Sat  tle_sat           = new TLE_Sat();
                byte[]   buffer            = new byte[250];
                DateTime epoch;
                //List<TLE_Sat> final_list = new List<TLE_Sat>();
                while (counter < (TLE_data.Length - 1))
                {
                    if (TLE_data[counter] == 10 && TLE_data[counter + 1] == 49)
                    {
                        tle_sat.Sat_Name = System.Text.Encoding.Default.GetString(buffer).Substring(2, 24).Replace("\0", String.Empty).Replace("\r", String.Empty);

                        Array.Clear(buffer, 0, buffer.Length);
                        _internal_counter = 0;
                    }
                    else if (TLE_data[counter] == 10 && TLE_data[counter + 1] == 50)
                    {
                        tle_sat.Sat_Number             = Convert.ToUInt32((System.Text.Encoding.Default.GetString(buffer)).Substring(2, 5));
                        tle_sat.Sat_Classification     = (System.Text.Encoding.Default.GetString(buffer)).Substring(7, 1);
                        tle_sat.Sat_IntDesignator      = (System.Text.Encoding.Default.GetString(buffer)).Substring(9, 8);
                        tle_sat.Sat_ElementSetEpoch    = (System.Text.Encoding.Default.GetString(buffer)).Substring(18, 14);
                        tle_sat.Sat_FirstMeanMotionDer = Convert.ToDouble((System.Text.Encoding.Default.GetString(buffer)).Substring(33, 10), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_SecMeanMotionDer   = TLE_Data_AuxMethods.GetDoubleFromScientificNotation((System.Text.Encoding.Default.GetString(buffer)).Substring(44, 8));
                        tle_sat.Sat_BSTARDrag          = TLE_Data_AuxMethods.GetDoubleFromScientificNotation((System.Text.Encoding.Default.GetString(buffer)).Substring(53, 8));
                        tle_sat.Sat_SetType            = (System.Text.Encoding.Default.GetString(buffer)).Substring(62, 1);
                        tle_sat.Sat_SetNumber          = (System.Text.Encoding.Default.GetString(buffer)).Substring(64, 4);

                        // Processed items
                        tle_sat.Sat_LaunchYear   = TLE_Data_AuxMethods.GetLaunchYearFromDesignator(tle_sat.Sat_IntDesignator);
                        tle_sat.Sat_LaunchNumber = TLE_Data_AuxMethods.GetLaunchNumberFromDesignator(tle_sat.Sat_IntDesignator);
                        tle_sat.Sat_LaunchPiece  = TLE_Data_AuxMethods.GetLaunchPieceFromDesignator(tle_sat.Sat_IntDesignator);
                        tle_sat.Sat_EpochYear    = TLE_Data_AuxMethods.GetYearFromEpoch(tle_sat.Sat_ElementSetEpoch);
                        tle_sat.Sat_EpochDay     = TLE_Data_AuxMethods.GetDayFromEpoch(tle_sat.Sat_ElementSetEpoch);
                        if (TLE_Data_AuxMethods.GetDateTimeFromEpoch(tle_sat.Sat_ElementSetEpoch, out epoch))
                        {
                            tle_sat.Sat_EpochDateTime = epoch;
                        }

                        Array.Clear(buffer, 0, buffer.Length);
                        _internal_counter = 0;
                    }
                    else if (TLE_data[counter] == 10 && TLE_data[counter + 1] == 48)
                    {
                        tle_sat.Sat_Inclination     = Convert.ToDouble((System.Text.Encoding.Default.GetString(buffer)).Substring(8, 8), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_RightAscension  = Convert.ToDouble((System.Text.Encoding.Default.GetString(buffer)).Substring(17, 8), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_Eccentricity    = Convert.ToDouble(("0." + (System.Text.Encoding.Default.GetString(buffer)).Substring(26, 7)), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_ArgumentPerigee = Convert.ToDouble((System.Text.Encoding.Default.GetString(buffer)).Substring(34, 8), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_MeanAnomaly     = Convert.ToDouble((System.Text.Encoding.Default.GetString(buffer)).Substring(43, 8), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_MeanMotion      = Convert.ToDouble((System.Text.Encoding.Default.GetString(buffer)).Substring(52, 11), System.Globalization.CultureInfo.InvariantCulture);
                        tle_sat.Sat_RevNumber       = Convert.ToUInt32((System.Text.Encoding.Default.GetString(buffer)).Substring(63, 5));

                        Array.Clear(buffer, 0, buffer.Length);
                        _internal_counter = 0;
                        _TLE_Sat_List.Add(tle_sat);
                        tle_sat = new TLE_Sat();
                    }
                    else
                    {
                        buffer[_internal_counter] = TLE_data[counter];
                        _internal_counter++;
                    }
                    counter++;
                }
                // Parse ROWS

                /*string[] raw_rows = TLE_data.Split('\n');
                 * List<string> final_rows = new List<string>();
                 * string _row = "";
                 *
                 * for (int i = 0; i < raw_rows.Count(); i++)
                 * {
                 *      _row += " " + raw_rows[i];
                 *      if ((i + 1) % 3 == 0)
                 *      {
                 *              final_rows.Add(_row);
                 *              _row = "";
                 *      }
                 * }
                 *
                 * // Parse COLUMNS
                 * List<string[]> final_list = new List<string[]>();
                 * char[] delimiters = new char[] { ' ', '\r' };
                 *
                 * foreach(var item in final_rows)
                 * {
                 *      string[] raw_final_row = item.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
                 *      final_list.Add(raw_final_row);
                 *      //Debug.WriteLine("Count: " + final_list.Count + "; Elements: " + raw_final_row.Length);
                 * }*/

                return(_TLE_Sat_List);
                //return null;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                return(null);
            }
        }
Пример #5
0
        /// <summary>
        /// This method is needed to promediate raw data
        ///
        /// In case there is only one entry in the input list, it will not change data except datetime epoch
        /// </summary>
        /// <param name="TLE_buffer_list">Raw TLE list data input</param>
        /// <returns>TLE instance with promediated data</returns>
        private static TLE_Sat TLE_PromediateList_Processed(List <TLE_Sat> TLE_buffer_list)
        {
            try
            {
                TLE_Sat result = new TLE_Sat();

                // Get datetime epoch. In this case hours, minutes and seconds will be 0. As it doesnt matter which entry is used, we get the first one
                int      day;
                int      month = TLE_Data_AuxMethods.GetMonthAndDayFromEpoch(TLE_buffer_list[0].Sat_ElementSetEpoch, out day);
                DateTime _TLE_epochDatetime;
                if (TLE_buffer_list.Count != 1)
                {
                    _TLE_epochDatetime = new DateTime((int)TLE_buffer_list[0].Sat_EpochYear, month, day, 0, 0, 0);
                }
                else
                {
                    _TLE_epochDatetime = TLE_buffer_list[0].Sat_EpochDateTime;
                }

                // Promediate certain parameters
                double _Sat_ElementSetEpoch_double = 0;
                double _Sat_FirstMeanMotionDer     = 0;
                double _Sat_SecMeanMotionDer       = 0;
                double _Sat_BSTARDrag       = 0;
                double _Sat_Inclination     = 0;
                double _Sat_RightAscension  = 0;
                double _Sat_Eccentricity    = 0;
                double _Sat_ArgumentPerigee = 0;
                double _Sat_MeanAnomaly     = 0;
                double _Sat_MeanMotion      = 0;
                uint   _Sat_RevNumber       = 0;
                double _Sat_Semiaxis        = 0;
                double _Sat_Perigee         = 0;
                double _Sat_Apogee          = 0;

                for (int i = 0; i < TLE_buffer_list.Count; i++)
                {
                    _Sat_ElementSetEpoch_double += Convert.ToDouble(TLE_buffer_list[i].Sat_ElementSetEpoch, System.Globalization.CultureInfo.InvariantCulture);
                    _Sat_FirstMeanMotionDer     += TLE_buffer_list[i].Sat_FirstMeanMotionDer;
                    _Sat_SecMeanMotionDer       += TLE_buffer_list[i].Sat_SecMeanMotionDer;
                    _Sat_BSTARDrag       += TLE_buffer_list[i].Sat_BSTARDrag;
                    _Sat_Inclination     += TLE_buffer_list[i].Sat_Inclination;
                    _Sat_RightAscension  += TLE_buffer_list[i].Sat_RightAscension;
                    _Sat_Eccentricity    += TLE_buffer_list[i].Sat_Eccentricity;
                    _Sat_ArgumentPerigee += TLE_buffer_list[i].Sat_ArgumentPerigee;
                    _Sat_MeanAnomaly     += TLE_buffer_list[i].Sat_MeanAnomaly;
                    _Sat_MeanMotion      += TLE_buffer_list[i].Sat_MeanMotion;
                    _Sat_RevNumber       += TLE_buffer_list[i].Sat_RevNumber;
                    _Sat_Semiaxis        += TLE_buffer_list[i].Sat_SemiAxis;
                    _Sat_Perigee         += TLE_buffer_list[i].Sat_Perigee;
                    _Sat_Apogee          += TLE_buffer_list[i].Sat_Apogee;
                }

                _Sat_ElementSetEpoch_double = _Sat_ElementSetEpoch_double / TLE_buffer_list.Count;
                _Sat_FirstMeanMotionDer     = _Sat_FirstMeanMotionDer / TLE_buffer_list.Count;
                _Sat_SecMeanMotionDer       = _Sat_SecMeanMotionDer / TLE_buffer_list.Count;
                _Sat_BSTARDrag       = _Sat_BSTARDrag / TLE_buffer_list.Count;
                _Sat_Inclination     = _Sat_Inclination / TLE_buffer_list.Count;
                _Sat_RightAscension  = _Sat_RightAscension / TLE_buffer_list.Count;
                _Sat_Eccentricity    = _Sat_Eccentricity / TLE_buffer_list.Count;
                _Sat_ArgumentPerigee = _Sat_ArgumentPerigee / TLE_buffer_list.Count;
                _Sat_MeanAnomaly     = _Sat_MeanAnomaly / TLE_buffer_list.Count;
                _Sat_MeanMotion      = _Sat_MeanMotion / TLE_buffer_list.Count;
                _Sat_RevNumber       = _Sat_RevNumber / (uint)TLE_buffer_list.Count;
                _Sat_Semiaxis        = _Sat_Semiaxis / TLE_buffer_list.Count;
                _Sat_Perigee         = _Sat_Perigee / TLE_buffer_list.Count;
                _Sat_Apogee          = _Sat_Apogee / TLE_buffer_list.Count;

                // Fill all TLE_Sat output. All data not promediated will be the first entry
                result.Sat_Number             = TLE_buffer_list[0].Sat_Number;
                result.Sat_Classification     = TLE_buffer_list[0].Sat_Classification;
                result.Sat_IntDesignator      = TLE_buffer_list[0].Sat_IntDesignator;
                result.Sat_ElementSetEpoch    = string.Format("{0:0.00000000}", _Sat_ElementSetEpoch_double);
                result.Sat_FirstMeanMotionDer = _Sat_FirstMeanMotionDer;
                result.Sat_SecMeanMotionDer   = _Sat_SecMeanMotionDer;
                result.Sat_BSTARDrag          = _Sat_BSTARDrag;
                result.Sat_SetType            = TLE_buffer_list[0].Sat_SetType;
                result.Sat_SetNumber          = TLE_buffer_list[0].Sat_SetNumber;
                result.Sat_Inclination        = _Sat_Inclination;
                result.Sat_RightAscension     = _Sat_RightAscension;
                result.Sat_Eccentricity       = _Sat_Eccentricity;
                result.Sat_ArgumentPerigee    = _Sat_ArgumentPerigee;
                result.Sat_MeanAnomaly        = _Sat_MeanAnomaly;
                result.Sat_MeanMotion         = _Sat_MeanMotion;
                result.Sat_RevNumber          = _Sat_RevNumber;
                result.Sat_LaunchYear         = TLE_Data_AuxMethods.GetLaunchYearFromDesignator(result.Sat_IntDesignator);
                result.Sat_LaunchNumber       = TLE_Data_AuxMethods.GetLaunchNumberFromDesignator(result.Sat_IntDesignator);
                result.Sat_LaunchPiece        = TLE_Data_AuxMethods.GetLaunchPieceFromDesignator(result.Sat_IntDesignator);
                result.Sat_EpochYear          = TLE_Data_AuxMethods.GetYearFromEpoch(result.Sat_ElementSetEpoch);
                result.Sat_EpochDay           = TLE_Data_AuxMethods.GetDayFromEpoch(result.Sat_ElementSetEpoch);
                result.Sat_EpochDateTime      = _TLE_epochDatetime;
                result.Sat_SemiAxis           = _Sat_Semiaxis;
                result.Sat_Perigee            = _Sat_Apogee;
                result.Sat_Apogee             = _Sat_Apogee;

                return(result);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                return(null);
            }
        }