Tle.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace Ips.Library.Entity
  5. {
  6. public class Tle
  7. {
  8. public class Enum
  9. {
  10. public enum SatClass
  11. {
  12. UNCLASSIFIED = 0, //!< int 0 unclassified satellite
  13. CLASSIFIED = 1, //!< int 1 classified satellite
  14. SECRET = 2 //!< int 2 secret satellite
  15. };
  16. }
  17. public string TleName { get; set; }
  18. public string Line1 { get; set; }
  19. public string Line2 { get; set; }
  20. public string TleText
  21. {
  22. get
  23. {
  24. return $"{TleName};{Line1};{Line2}";
  25. }
  26. }
  27. private string satName; /*!<Object Name Identifier*/
  28. private string noradID; /*!< NORAD Identification Number */
  29. private Enum.SatClass classification; /*!< NORAD Satellite Classification */
  30. private int startYear; /*!< International Designator 2 digits StartYear (06)*/
  31. private int startNumber; /*!< International Designator 3 digits StartNumber (546)*/
  32. private string pieceLaunch; /*!< International Designator 3 symbols Piece of Launch (AAA)*/
  33. private int epochYear; /*!< Epoch 2 digits StartYear (08)*/
  34. private double epochDay; /*!< Epoch fractional portion of the Day (264.51782528)*/
  35. private double firstMeanMotion; /*!< First Time Derivative of the Mean Motion divided by two (−.00002182)*/
  36. private double secondMeanMotion; /*!< Second Time Derivative of Mean Motion divided by six (00000-0)*/
  37. private double dragTerm; /*!< BSTAR drag term (-11606-4)*/
  38. private double ephemeris; /*!< Ephemeris type (0 = SGP4-Model)*/
  39. private int setNumber; /*!< Element set number. incremented when a new TLE is generated for this object (124)*/
  40. private int checksum1; /*!< Checksum for first Line of TLE Modulo 10 (7)*/
  41. private int satNumber; /*!< Satellite Number (25544) */
  42. private double inclination; /*!< Inclination in Degrees (51.6416)*/
  43. private double rightAscension; /*!< Right Ascension of the Ascending Node ín Degrees (247.4627)*/
  44. private double eccentricity; /*!< Eccentricity (0006703) */
  45. private double perigee; /*!< Argument of Perigee in degrees (130.5360)*/
  46. private double meanAnomoly; /*!< Mean Anomaly in Degrees (325.0288) */
  47. private double meanMotion; /*!< Mean Motion Revs per day (15.72125391) */
  48. private double relevationNumber; /*!< Revolution number at epoch (56353) */
  49. private int checksum2; /*!< Checksum for second Line of TLE Modulo 10 (7)*/
  50. public Tle()
  51. {
  52. }
  53. public Tle(string name)
  54. {
  55. }
  56. public Tle(string name, string id, Enum.SatClass clas, int startY, int startNr,
  57. string piece, int epochY, double epochD, double firstMM, double secondMM,
  58. double drag, double ephem, int setNr, int check1, int satNr, double incl,
  59. double rightAsc, double ecce, double peri, double meanAn, double meanMo,
  60. double relevationNr, int check2)
  61. {
  62. satName = name;
  63. noradID = id;
  64. classification = clas;
  65. startYear = startY;
  66. startNumber = startNr;
  67. pieceLaunch = piece;
  68. epochYear = epochY;
  69. epochDay = epochD;
  70. firstMeanMotion = firstMM;
  71. secondMeanMotion = secondMM;
  72. dragTerm = drag;
  73. ephemeris = ephem;
  74. setNumber = setNr;
  75. checksum1 = check1;
  76. satNumber = satNr;
  77. inclination = incl;
  78. rightAscension = rightAsc;
  79. eccentricity = ecce;
  80. perigee = peri;
  81. meanAnomoly = meanAn;
  82. meanMotion = meanMo;
  83. relevationNumber = relevationNr;
  84. checksum2 = check2;
  85. }
  86. public Tle(string name, string id, int clas, int startY, int startNr,
  87. string piece, int epochY, double epochD, double firstMM, double secondMM,
  88. double drag, double ephem, int setNr, int check1, int satNr, double incl,
  89. double rightAsc, double ecce, double peri, double meanAn, double meanMo,
  90. double relevationNr, int check2)
  91. {
  92. satName = name;
  93. noradID = id;
  94. classification = (Enum.SatClass)clas;
  95. startYear = startY;
  96. startNumber = startNr;
  97. pieceLaunch = piece;
  98. epochYear = epochY;
  99. epochDay = epochD;
  100. firstMeanMotion = firstMM;
  101. secondMeanMotion = secondMM;
  102. dragTerm = drag;
  103. ephemeris = ephem;
  104. setNumber = setNr;
  105. checksum1 = check1;
  106. satNumber = satNr;
  107. inclination = incl;
  108. rightAscension = rightAsc;
  109. eccentricity = ecce;
  110. perigee = peri;
  111. meanAnomoly = meanAn;
  112. meanMotion = meanMo;
  113. relevationNumber = relevationNr;
  114. checksum2 = check2;
  115. }
  116. public bool isValidData()
  117. {
  118. return true;
  119. }
  120. public string getName()
  121. {
  122. return satName;
  123. }
  124. public string getNoradID()
  125. {
  126. return noradID;
  127. }
  128. public int getStartYear()
  129. {
  130. return startYear;
  131. }
  132. public int getStartNr()
  133. {
  134. return startNumber;
  135. }
  136. public string getPice()
  137. {
  138. return pieceLaunch;
  139. }
  140. public int getEpochYear()
  141. {
  142. return epochYear;
  143. }
  144. public double getEpochDay()
  145. {
  146. return epochDay;
  147. }
  148. public DateTime getEpochTime()
  149. {
  150. int year = 0;
  151. if (epochYear < 57)
  152. year = epochYear + 2000;
  153. else
  154. year = epochYear + 1900;
  155. var epoch = new DateTime(year, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddDays(epochDay - 1);
  156. return epoch.ToLocalTime();
  157. }
  158. public double getFirstMeanMotion()
  159. {
  160. return firstMeanMotion;
  161. }
  162. public double getSecondMeanMotion()
  163. {
  164. return secondMeanMotion;
  165. }
  166. public double getDrag()
  167. {
  168. return dragTerm;
  169. }
  170. public double getEphemeris()
  171. {
  172. return ephemeris;
  173. }
  174. public double getSetNumber()
  175. {
  176. return setNumber;
  177. }
  178. public int getSatNumber()
  179. {
  180. return satNumber;
  181. }
  182. public double getInclination()
  183. {
  184. return inclination;
  185. }
  186. public double getRightAscendingNode()
  187. {
  188. return rightAscension;
  189. }
  190. public double getEccentriciy()
  191. {
  192. return eccentricity;
  193. }
  194. public double getPerigee()
  195. {
  196. return perigee;
  197. }
  198. public double getMeanAnomoly()
  199. {
  200. return meanAnomoly;
  201. }
  202. public double getMeanMotion()
  203. {
  204. return meanMotion;
  205. }
  206. public double getRelevationNumber()
  207. {
  208. return relevationNumber;
  209. }
  210. public int getClassification()
  211. {
  212. return (int)classification;
  213. }
  214. public int getFirstCheckSum()
  215. {
  216. return checksum1;
  217. }
  218. public int getSecCheckSum()
  219. {
  220. return checksum2;
  221. }
  222. }
  223. }