123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- namespace Ips.Library.SigLoc
- {
- public class WarSatFreq
- {
- public WarSatFreq() { }
- public WarSatFreq(long upFreq, long downFreq)
- {
- this.UpFreq = upFreq;
- this.DownFreq = downFreq;
- }
- public long UpFreq { get; set; }
- public long DownFreq { get; set; }
- static Dictionary<long, long> _freqCache = new Dictionary<long, long>();
- public static long GetDownFreq(long upFreq)
- {
- if (upFreq == 0) return 0;
- if (!_freqCache.ContainsKey(upFreq))
- {
- var freqItem = WarSatFreqData.ZsxSigList
- .Select(m => new { AbsValue = Math.Abs(m.UpFreq - upFreq), m.UpFreq, m.DownFreq })
- .OrderBy(m => m.AbsValue)
- .FirstOrDefault();
- if (freqItem == null) return 0;
- var result = upFreq - (freqItem.UpFreq - freqItem.DownFreq);
- _freqCache.Add(upFreq, result);
- }
- return _freqCache[upFreq];
- }
- }
- public static class WarSatFreqData
- {
- public const string ZsxSigFreqListString = @"310.75,269.75
- 292.85,251.85
- 302.865,249.265
- 302.875,249.275
- 302.885,249.285
- 302.895,249.295
- 302.9,249.3
- 302.905,249.305
- 302.915,249.315
- 302.925,249.325
- 302.935,249.335
- 302.945,249.345
- 302.95,249.35
- 302.855,249.255
- 302.955,249.355
- 311.15,257.55
- 316.955,243.855
- 316.96,243.86
- 316.975,243.875
- 317,243.9
- 317.01,243.91
- 317.015,243.915
- 317.025,243.925
- 317.035,243.935
- 317.045,243.945
- 317.055,243.955
- 307.75,254.15
- 302.85,249.25
- 302.845,249.245
- 302.835,249.235
- 302.625,249.025
- 302.635,249.035
- 302.645,249.045
- 302.65,249.05
- 302.655,249.055
- 302.665,249.065
- 302.675,249.075
- 302.685,249.085
- 302.695,249.095
- 302.7,249.1
- 302.705,249.105
- 302.715,249.115
- 302.725,249.125
- 302.735,249.135
- 302.745,249.145
- 302.75,249.15
- 302.755,249.155
- 302.765,249.165
- 302.775,249.175
- 302.785,249.185
- 302.795,249.195
- 302.8,249.2
- 302.805,249.205
- 302.815,249.215
- 302.825,249.225
- 317.065,243.965
- 317.075,243.975
- 317.085,243.985
- 317.09,243.99
- 317.31,244.21
- 317.315,244.215
- 317.325,244.225
- 296.35,255.35
- 296.45,255.45
- 296.55,255.55
- 297.85,256.85
- 297.95,256.95
- 298.05,257.05
- 298.15,257.15
- 299.35,258.35
- 299.45,258.45
- 299.55,258.55
- 299.65,258.65
- 306.25,265.25
- 306.35,265.35
- 306.45,265.45
- 306.55,265.55
- 307.75,266.75
- 307.85,266.85
- 307.95,266.95
- 308.05,267.05
- 309.15,268.15
- 309.25,268.25
- 309.35,268.35
- 317.305,244.205
- 302.615,249.015
- 317.3,244.2
- 317.29,244.19
- 317.095,243.995
- 317.1,244
- 317.105,244.005
- 317.11,244.01
- 317.115,244.015
- 317.125,244.025
- 317.135,244.035
- 317.145,244.045
- 317.155,244.055
- 317.165,244.065
- 317.175,244.075
- 317.185,244.085
- 317.19,244.09
- 317.195,244.095
- 317.2,244.1
- 317.205,244.105
- 317.21,244.11
- 317.215,244.115
- 317.225,244.125
- 317.235,244.135
- 317.245,244.145
- 317.255,244.155
- 317.265,244.165
- 317.275,244.175
- 317.285,244.185
- 317.295,244.195
- 302.605,249.005
- 302.6,249
- 302.595,248.995
- 294.425,260.825
- 294.45,260.85
- 295.05,261.45
- 295.075,261.475
- 295.1,261.5
- 295.125,261.525
- 295.15,261.55
- 295.175,261.575
- 295.2,261.6
- 295.225,261.625
- 295.25,261.65
- 295.275,261.675
- 295.3,261.7
- 295.325,261.725
- 295.35,261.75
- 295.375,261.775
- 295.4,261.8
- 295.425,261.825
- 295.45,261.85
- 295.475,261.875
- 295.5,261.9
- 295.525,261.925
- 295.55,261.95
- 295.65,262.05
- 295.675,262.075
- 294.4,260.8
- 295.7,262.1
- 294.375,260.775
- 294.325,260.725
- 292.95,251.95
- 293.05,252.05
- 293.15,252.15
- 294.55,253.55
- 294.65,253.65
- 294.75,253.75
- 294.85,253.85
- 296.25,255.25
- 310.85,269.85
- 310.95,269.95
- 293.95,260.35
- 293.975,260.375
- 294,260.4
- 294.025,260.425
- 294.05,260.45
- 294.075,260.475
- 294.1,260.5
- 294.125,260.525
- 294.15,260.55
- 294.175,260.575
- 294.2,260.6
- 294.225,260.625
- 294.25,260.65
- 294.275,260.675
- 294.3,260.7
- 294.35,260.75
- 309.45,268.45
- 295.725,262.125
- 295.775,262.175
- 297.5,263.9
- 297.525,263.925
- 297.55,263.95
- 297.575,263.975
- 297.6,264
- 297.625,264.025
- 297.65,264.05
- 302.445,248.845
- 302.45,248.85
- 302.455,248.855
- 302.465,248.865
- 302.475,248.875
- 302.485,248.885
- 302.495,248.895
- 302.5,248.9
- 302.505,248.905
- 302.515,248.915
- 302.525,248.925
- 302.535,248.935
- 302.545,248.945
- 302.55,248.95
- 302.555,248.955
- 302.565,248.965
- 302.575,248.975
- 302.585,248.985
- 297.475,263.875
- 295.75,262.15
- 297.45,263.85
- 297.4,263.8
- 295.8,262.2
- 295.825,262.225
- 295.85,262.25
- 295.875,262.275
- 295.9,262.3
- 295.925,262.325
- 295.95,262.35
- 295.975,262.375
- 296,262.4
- 296.025,262.425
- 296.05,262.45
- 296.075,262.475
- 296.1,262.5
- 296.125,262.525
- 296.15,262.55
- 297.15,263.55
- 297.175,263.575
- 297.2,263.6
- 297.225,263.625
- 297.25,263.65
- 297.275,263.675
- 297.3,263.7
- 297.325,263.725
- 297.35,263.75
- 297.375,263.775
- 297.425,263.825
- 310.65,269.65";
- private static List<WarSatFreq> _zsxSigList;
- public static List<WarSatFreq> ZsxSigList
- {
- get
- {
- if (_zsxSigList == null)
- {
- _zsxSigList = new List<WarSatFreq>();
- using (var reader = new StringReader(ZsxSigFreqListString))
- {
- string line;
- while ((line = reader.ReadLine()) != null)
- {
- var upDownFreqArr = line.Split(',');
- if (upDownFreqArr.Length > 1)
- {
- var upfreq = decimal.Parse(upDownFreqArr[0]) * 1e6m;
- var downfreq = decimal.Parse(upDownFreqArr[1]) * 1e6m;
- var freqBssic = new WarSatFreq((long)upfreq, (long)downfreq);
- _zsxSigList.Add(freqBssic);
- }
- }
- }
- }
- return _zsxSigList;
- }
- }
- }
- }
|