123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Ips.Library.Entity
- {
- public class Tle
- {
- public class Enum
- {
- public enum SatClass
- {
- UNCLASSIFIED = 0, //!< int 0 unclassified satellite
- CLASSIFIED = 1, //!< int 1 classified satellite
- SECRET = 2 //!< int 2 secret satellite
- };
- }
- public string TleName { get; set; }
- public string Line1 { get; set; }
- public string Line2 { get; set; }
- public string TleText
- {
- get
- {
- return $"{TleName};{Line1};{Line2}";
- }
- }
- private string satName; /*!<Object Name Identifier*/
- private string noradID; /*!< NORAD Identification Number */
- private Enum.SatClass classification; /*!< NORAD Satellite Classification */
- private int startYear; /*!< International Designator 2 digits StartYear (06)*/
- private int startNumber; /*!< International Designator 3 digits StartNumber (546)*/
- private string pieceLaunch; /*!< International Designator 3 symbols Piece of Launch (AAA)*/
- private int epochYear; /*!< Epoch 2 digits StartYear (08)*/
- private double epochDay; /*!< Epoch fractional portion of the Day (264.51782528)*/
- private double firstMeanMotion; /*!< First Time Derivative of the Mean Motion divided by two (−.00002182)*/
- private double secondMeanMotion; /*!< Second Time Derivative of Mean Motion divided by six (00000-0)*/
- private double dragTerm; /*!< BSTAR drag term (-11606-4)*/
- private double ephemeris; /*!< Ephemeris type (0 = SGP4-Model)*/
- private int setNumber; /*!< Element set number. incremented when a new TLE is generated for this object (124)*/
- private int checksum1; /*!< Checksum for first Line of TLE Modulo 10 (7)*/
- private int satNumber; /*!< Satellite Number (25544) */
- private double inclination; /*!< Inclination in Degrees (51.6416)*/
- private double rightAscension; /*!< Right Ascension of the Ascending Node ín Degrees (247.4627)*/
- private double eccentricity; /*!< Eccentricity (0006703) */
- private double perigee; /*!< Argument of Perigee in degrees (130.5360)*/
- private double meanAnomoly; /*!< Mean Anomaly in Degrees (325.0288) */
- private double meanMotion; /*!< Mean Motion Revs per day (15.72125391) */
- private double relevationNumber; /*!< Revolution number at epoch (56353) */
- private int checksum2; /*!< Checksum for second Line of TLE Modulo 10 (7)*/
- public Tle()
- {
- }
- public Tle(string name)
- {
- }
- public Tle(string name, string id, Enum.SatClass clas, int startY, int startNr,
- string piece, int epochY, double epochD, double firstMM, double secondMM,
- double drag, double ephem, int setNr, int check1, int satNr, double incl,
- double rightAsc, double ecce, double peri, double meanAn, double meanMo,
- double relevationNr, int check2)
- {
- satName = name;
- noradID = id;
- classification = clas;
- startYear = startY;
- startNumber = startNr;
- pieceLaunch = piece;
- epochYear = epochY;
- epochDay = epochD;
- firstMeanMotion = firstMM;
- secondMeanMotion = secondMM;
- dragTerm = drag;
- ephemeris = ephem;
- setNumber = setNr;
- checksum1 = check1;
- satNumber = satNr;
- inclination = incl;
- rightAscension = rightAsc;
- eccentricity = ecce;
- perigee = peri;
- meanAnomoly = meanAn;
- meanMotion = meanMo;
- relevationNumber = relevationNr;
- checksum2 = check2;
- }
- public Tle(string name, string id, int clas, int startY, int startNr,
- string piece, int epochY, double epochD, double firstMM, double secondMM,
- double drag, double ephem, int setNr, int check1, int satNr, double incl,
- double rightAsc, double ecce, double peri, double meanAn, double meanMo,
- double relevationNr, int check2)
- {
- satName = name;
- noradID = id;
- classification = (Enum.SatClass)clas;
- startYear = startY;
- startNumber = startNr;
- pieceLaunch = piece;
- epochYear = epochY;
- epochDay = epochD;
- firstMeanMotion = firstMM;
- secondMeanMotion = secondMM;
- dragTerm = drag;
- ephemeris = ephem;
- setNumber = setNr;
- checksum1 = check1;
- satNumber = satNr;
- inclination = incl;
- rightAscension = rightAsc;
- eccentricity = ecce;
- perigee = peri;
- meanAnomoly = meanAn;
- meanMotion = meanMo;
- relevationNumber = relevationNr;
- checksum2 = check2;
- }
- public bool isValidData()
- {
- return true;
- }
- public string getName()
- {
- return satName;
- }
- public string getNoradID()
- {
- return noradID;
- }
- public int getStartYear()
- {
- return startYear;
- }
- public int getStartNr()
- {
- return startNumber;
- }
- public string getPice()
- {
- return pieceLaunch;
- }
- public int getEpochYear()
- {
- return epochYear;
- }
- public double getEpochDay()
- {
- return epochDay;
- }
- public DateTime getEpochTime()
- {
- int year = 0;
- if (epochYear < 57)
- year = epochYear + 2000;
- else
- year = epochYear + 1900;
- var epoch = new DateTime(year, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddDays(epochDay - 1);
- return epoch.ToLocalTime();
- }
- public double getFirstMeanMotion()
- {
- return firstMeanMotion;
- }
- public double getSecondMeanMotion()
- {
- return secondMeanMotion;
- }
- public double getDrag()
- {
- return dragTerm;
- }
- public double getEphemeris()
- {
- return ephemeris;
- }
- public double getSetNumber()
- {
- return setNumber;
- }
- public int getSatNumber()
- {
- return satNumber;
- }
- public double getInclination()
- {
- return inclination;
- }
- public double getRightAscendingNode()
- {
- return rightAscension;
- }
- public double getEccentriciy()
- {
- return eccentricity;
- }
- public double getPerigee()
- {
- return perigee;
- }
- public double getMeanAnomoly()
- {
- return meanAnomoly;
- }
- public double getMeanMotion()
- {
- return meanMotion;
- }
- public double getRelevationNumber()
- {
- return relevationNumber;
- }
- public int getClassification()
- {
- return (int)classification;
- }
- public int getFirstCheckSum()
- {
- return checksum1;
- }
- public int getSecCheckSum()
- {
- return checksum2;
- }
- }
- }
|