/// <summary> /// 执行选星 /// </summary> /// <returns></returns> public override SatelliteNumber Select() { var start = TimePeriod.Start; var end = TimePeriod.End; TableCell maxCell = null; if (EnableCenterMaxSelection) { var windowSpan = Math.Min(CenterCount, TimePeriod.Span); var middle = Time.Parse(start + TimeSpan.FromSeconds(TimePeriod.Span / 2.0)); maxCell = SatEleTable.GetMax(middle, CenterCount); return(SatelliteNumber.Parse(maxCell.ColName)); //start = middle - TimeSpan.FromSeconds(windowSpan / 2.0); //end = middle + TimeSpan.FromSeconds(windowSpan / 2.0); } maxCell = SatEleTable.GetMax(start, end); return(SatelliteNumber.Parse(maxCell.ColName)); }
/// <summary> /// 执行选星 /// </summary> /// <returns></returns> public override SatelliteNumber Select() { var start = TimePeriod.Start; var end = TimePeriod.End; var subTable = SatEleTable.GetSub(start, end); var dic = subTable.GetValidDataCount(m => m >= CutOffAngle); var max = dic.Where(m => m.Value == dic.Max(n => n.Value)).ToList(); var maxItem = max.First(); double maxValue = double.MinValue; foreach (var item in max) { var thisVal = subTable.GetMaxValue(item.Key, start, end); if (maxValue < thisVal) { maxValue = thisVal; maxItem = item; } } return(SatelliteNumber.Parse(maxItem.Key)); }