using Ips.Library.Entity; namespace Ips.Sps.Scheduling { public class RunSig { public int SigId { get; set; } public SignalCategory SigCategory { get; set; } public SignalType SigType { get; set; } public long SigFreq { get; set; } public long FreqStart { get; set; } public int FreqStep { get; set; } public long FreqEnd { get; set; } public int BandWidth { get; set; } public int SigLen { get; set; } public int MainSatId { get; set; } public List AdjaSatIds { get; set; } public bool HasRange { get; set; } public double SigLon { get; set; } public double SigLat { get; set; } public double SigAlt { get; set; } public double LonRange { get; set; } public double LatRange { get; set; } public double LonMin => SigLon - LonRange / 2; public double LonMax => SigLon + LonRange / 2; public double LatMin => SigLat - LatRange / 2; public double LatMax => SigLat + LatRange / 2; public int EmtId { get; set; } public string SigEmtCode { get; set; } public string SigEmtName { get; set; } public EmtType SigEmtType { get; set; } public double SigEmtSpeed { get; set; } public bool HasSample { get; set; } public List SigSamples { get; set; } = new List(); public int Fs { get; set; } public RunSigDama DamaEx { get; set; } = new RunSigDama(); public RunSig Copy() { return (RunSig)this.MemberwiseClone(); } } public static class RunSigExtensions { public static IEnumerable GetSatList(this RunSig sig) { IEnumerable satIds; if (sig.MainSatId > 0) { satIds = new int[] { sig.MainSatId }.Concat(sig.AdjaSatIds); } else { satIds = sig.AdjaSatIds.ToList(); } return satIds.Distinct(); } public static double[] GetSigLla(this RunSig sig) { return new double[] { sig.SigLon, sig.SigLat, sig.SigAlt }; } public static double[] GetSigRange(this RunSig sig) { return new double[] { sig.SigLon, sig.SigLat, sig.SigAlt, sig.LonRange, sig.LatRange }; } public static double[] GetSigZone(this RunSig sig) { return new double[] { sig.LonMin, sig.LonMax, sig.LatMin, sig.LatMax }; } } }