RunSig.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using Ips.Library.Entity;
  2. namespace Ips.Sps.Scheduling
  3. {
  4. public class RunSig
  5. {
  6. public int SigId { get; set; }
  7. public SignalCategory SigCategory { get; set; }
  8. public SignalType SigType { get; set; }
  9. public long SigFreq { get; set; }
  10. public long FreqStart { get; set; }
  11. public int FreqStep { get; set; }
  12. public long FreqEnd { get; set; }
  13. public int BandWidth { get; set; }
  14. public int SigLen { get; set; }
  15. public int MainSatId { get; set; }
  16. public List<int> AdjaSatIds { get; set; }
  17. public bool HasRange { get; set; }
  18. public double SigLon { get; set; }
  19. public double SigLat { get; set; }
  20. public double SigAlt { get; set; }
  21. public double LonRange { get; set; }
  22. public double LatRange { get; set; }
  23. public double LonMin => SigLon - LonRange / 2;
  24. public double LonMax => SigLon + LonRange / 2;
  25. public double LatMin => SigLat - LatRange / 2;
  26. public double LatMax => SigLat + LatRange / 2;
  27. public int EmtId { get; set; }
  28. public string SigEmtCode { get; set; }
  29. public string SigEmtName { get; set; }
  30. public EmtType SigEmtType { get; set; }
  31. public double SigEmtSpeed { get; set; }
  32. public bool HasSample { get; set; }
  33. public List<RunSigSample> SigSamples { get; set; } = new List<RunSigSample>();
  34. public int Fs { get; set; }
  35. public RunSigDama DamaEx { get; set; } = new RunSigDama();
  36. public RunSig Copy()
  37. {
  38. return (RunSig)this.MemberwiseClone();
  39. }
  40. }
  41. public static class RunSigExtensions
  42. {
  43. public static IEnumerable<int> GetSatList(this RunSig sig)
  44. {
  45. IEnumerable<int> satIds;
  46. if (sig.MainSatId > 0)
  47. {
  48. satIds = new int[] { sig.MainSatId }.Concat(sig.AdjaSatIds);
  49. }
  50. else
  51. {
  52. satIds = sig.AdjaSatIds.ToList();
  53. }
  54. return satIds.Distinct();
  55. }
  56. public static double[] GetSigLla(this RunSig sig)
  57. {
  58. return new double[] { sig.SigLon, sig.SigLat, sig.SigAlt };
  59. }
  60. public static double[] GetSigRange(this RunSig sig)
  61. {
  62. return new double[] { sig.SigLon, sig.SigLat, sig.SigAlt, sig.LonRange, sig.LatRange };
  63. }
  64. public static double[] GetSigZone(this RunSig sig)
  65. {
  66. return new double[] { sig.LonMin, sig.LonMax, sig.LatMin, sig.LatMax };
  67. }
  68. }
  69. }