Esempio n. 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);
            }
        }
Esempio n. 2
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);
            }
        }