WarSatFreq.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. namespace Ips.Library.SigLoc
  7. {
  8. public class WarSatFreq
  9. {
  10. public WarSatFreq() { }
  11. public WarSatFreq(long upFreq, long downFreq)
  12. {
  13. this.UpFreq = upFreq;
  14. this.DownFreq = downFreq;
  15. }
  16. public long UpFreq { get; set; }
  17. public long DownFreq { get; set; }
  18. static Dictionary<long, long> _freqCache = new Dictionary<long, long>();
  19. public static long GetDownFreq(long upFreq)
  20. {
  21. if (upFreq == 0) return 0;
  22. if (!_freqCache.ContainsKey(upFreq))
  23. {
  24. var freqItem = WarSatFreqData.ZsxSigList
  25. .Select(m => new { AbsValue = Math.Abs(m.UpFreq - upFreq), m.UpFreq, m.DownFreq })
  26. .OrderBy(m => m.AbsValue)
  27. .FirstOrDefault();
  28. if (freqItem == null) return 0;
  29. var result = upFreq - (freqItem.UpFreq - freqItem.DownFreq);
  30. _freqCache.Add(upFreq, result);
  31. }
  32. return _freqCache[upFreq];
  33. }
  34. }
  35. public static class WarSatFreqData
  36. {
  37. public const string ZsxSigFreqListString = @"310.75,269.75
  38. 292.85,251.85
  39. 302.865,249.265
  40. 302.875,249.275
  41. 302.885,249.285
  42. 302.895,249.295
  43. 302.9,249.3
  44. 302.905,249.305
  45. 302.915,249.315
  46. 302.925,249.325
  47. 302.935,249.335
  48. 302.945,249.345
  49. 302.95,249.35
  50. 302.855,249.255
  51. 302.955,249.355
  52. 311.15,257.55
  53. 316.955,243.855
  54. 316.96,243.86
  55. 316.975,243.875
  56. 317,243.9
  57. 317.01,243.91
  58. 317.015,243.915
  59. 317.025,243.925
  60. 317.035,243.935
  61. 317.045,243.945
  62. 317.055,243.955
  63. 307.75,254.15
  64. 302.85,249.25
  65. 302.845,249.245
  66. 302.835,249.235
  67. 302.625,249.025
  68. 302.635,249.035
  69. 302.645,249.045
  70. 302.65,249.05
  71. 302.655,249.055
  72. 302.665,249.065
  73. 302.675,249.075
  74. 302.685,249.085
  75. 302.695,249.095
  76. 302.7,249.1
  77. 302.705,249.105
  78. 302.715,249.115
  79. 302.725,249.125
  80. 302.735,249.135
  81. 302.745,249.145
  82. 302.75,249.15
  83. 302.755,249.155
  84. 302.765,249.165
  85. 302.775,249.175
  86. 302.785,249.185
  87. 302.795,249.195
  88. 302.8,249.2
  89. 302.805,249.205
  90. 302.815,249.215
  91. 302.825,249.225
  92. 317.065,243.965
  93. 317.075,243.975
  94. 317.085,243.985
  95. 317.09,243.99
  96. 317.31,244.21
  97. 317.315,244.215
  98. 317.325,244.225
  99. 296.35,255.35
  100. 296.45,255.45
  101. 296.55,255.55
  102. 297.85,256.85
  103. 297.95,256.95
  104. 298.05,257.05
  105. 298.15,257.15
  106. 299.35,258.35
  107. 299.45,258.45
  108. 299.55,258.55
  109. 299.65,258.65
  110. 306.25,265.25
  111. 306.35,265.35
  112. 306.45,265.45
  113. 306.55,265.55
  114. 307.75,266.75
  115. 307.85,266.85
  116. 307.95,266.95
  117. 308.05,267.05
  118. 309.15,268.15
  119. 309.25,268.25
  120. 309.35,268.35
  121. 317.305,244.205
  122. 302.615,249.015
  123. 317.3,244.2
  124. 317.29,244.19
  125. 317.095,243.995
  126. 317.1,244
  127. 317.105,244.005
  128. 317.11,244.01
  129. 317.115,244.015
  130. 317.125,244.025
  131. 317.135,244.035
  132. 317.145,244.045
  133. 317.155,244.055
  134. 317.165,244.065
  135. 317.175,244.075
  136. 317.185,244.085
  137. 317.19,244.09
  138. 317.195,244.095
  139. 317.2,244.1
  140. 317.205,244.105
  141. 317.21,244.11
  142. 317.215,244.115
  143. 317.225,244.125
  144. 317.235,244.135
  145. 317.245,244.145
  146. 317.255,244.155
  147. 317.265,244.165
  148. 317.275,244.175
  149. 317.285,244.185
  150. 317.295,244.195
  151. 302.605,249.005
  152. 302.6,249
  153. 302.595,248.995
  154. 294.425,260.825
  155. 294.45,260.85
  156. 295.05,261.45
  157. 295.075,261.475
  158. 295.1,261.5
  159. 295.125,261.525
  160. 295.15,261.55
  161. 295.175,261.575
  162. 295.2,261.6
  163. 295.225,261.625
  164. 295.25,261.65
  165. 295.275,261.675
  166. 295.3,261.7
  167. 295.325,261.725
  168. 295.35,261.75
  169. 295.375,261.775
  170. 295.4,261.8
  171. 295.425,261.825
  172. 295.45,261.85
  173. 295.475,261.875
  174. 295.5,261.9
  175. 295.525,261.925
  176. 295.55,261.95
  177. 295.65,262.05
  178. 295.675,262.075
  179. 294.4,260.8
  180. 295.7,262.1
  181. 294.375,260.775
  182. 294.325,260.725
  183. 292.95,251.95
  184. 293.05,252.05
  185. 293.15,252.15
  186. 294.55,253.55
  187. 294.65,253.65
  188. 294.75,253.75
  189. 294.85,253.85
  190. 296.25,255.25
  191. 310.85,269.85
  192. 310.95,269.95
  193. 293.95,260.35
  194. 293.975,260.375
  195. 294,260.4
  196. 294.025,260.425
  197. 294.05,260.45
  198. 294.075,260.475
  199. 294.1,260.5
  200. 294.125,260.525
  201. 294.15,260.55
  202. 294.175,260.575
  203. 294.2,260.6
  204. 294.225,260.625
  205. 294.25,260.65
  206. 294.275,260.675
  207. 294.3,260.7
  208. 294.35,260.75
  209. 309.45,268.45
  210. 295.725,262.125
  211. 295.775,262.175
  212. 297.5,263.9
  213. 297.525,263.925
  214. 297.55,263.95
  215. 297.575,263.975
  216. 297.6,264
  217. 297.625,264.025
  218. 297.65,264.05
  219. 302.445,248.845
  220. 302.45,248.85
  221. 302.455,248.855
  222. 302.465,248.865
  223. 302.475,248.875
  224. 302.485,248.885
  225. 302.495,248.895
  226. 302.5,248.9
  227. 302.505,248.905
  228. 302.515,248.915
  229. 302.525,248.925
  230. 302.535,248.935
  231. 302.545,248.945
  232. 302.55,248.95
  233. 302.555,248.955
  234. 302.565,248.965
  235. 302.575,248.975
  236. 302.585,248.985
  237. 297.475,263.875
  238. 295.75,262.15
  239. 297.45,263.85
  240. 297.4,263.8
  241. 295.8,262.2
  242. 295.825,262.225
  243. 295.85,262.25
  244. 295.875,262.275
  245. 295.9,262.3
  246. 295.925,262.325
  247. 295.95,262.35
  248. 295.975,262.375
  249. 296,262.4
  250. 296.025,262.425
  251. 296.05,262.45
  252. 296.075,262.475
  253. 296.1,262.5
  254. 296.125,262.525
  255. 296.15,262.55
  256. 297.15,263.55
  257. 297.175,263.575
  258. 297.2,263.6
  259. 297.225,263.625
  260. 297.25,263.65
  261. 297.275,263.675
  262. 297.3,263.7
  263. 297.325,263.725
  264. 297.35,263.75
  265. 297.375,263.775
  266. 297.425,263.825
  267. 310.65,269.65";
  268. private static List<WarSatFreq> _zsxSigList;
  269. public static List<WarSatFreq> ZsxSigList
  270. {
  271. get
  272. {
  273. if (_zsxSigList == null)
  274. {
  275. _zsxSigList = new List<WarSatFreq>();
  276. using (var reader = new StringReader(ZsxSigFreqListString))
  277. {
  278. string line;
  279. while ((line = reader.ReadLine()) != null)
  280. {
  281. var upDownFreqArr = line.Split(',');
  282. if (upDownFreqArr.Length > 1)
  283. {
  284. var upfreq = decimal.Parse(upDownFreqArr[0]) * 1e6m;
  285. var downfreq = decimal.Parse(upDownFreqArr[1]) * 1e6m;
  286. var freqBssic = new WarSatFreq((long)upfreq, (long)downfreq);
  287. _zsxSigList.Add(freqBssic);
  288. }
  289. }
  290. }
  291. }
  292. return _zsxSigList;
  293. }
  294. }
  295. }
  296. }