/// <summary> /// 判断闪电是否在边界内,是则加入;内存中只存1000个闪电,节约内存 /// </summary> /// <param name="_strikes"></param> public void AddStrikeToShapeWithJudgment(IEnumerable <LightningStrikeStandard> _strikes) { Int64 count = _strikes.LongCount(); strikes_Standard = new LightningStrikes_Standard(); //重新初始化核心列表 int spanNum = 1000; //分段的个数 var tmpStrikeList = new ConcurrentBag <LightningStrikeStandard>(); if (count > spanNum)//个数超过1000 { Int64 sumTimes = count / spanNum + 1; for (int cicledTimes = 0; cicledTimes < sumTimes; cicledTimes++) { foreach (var tmpStrike in strikes_Standard.Strikes.Skip(cicledTimes * spanNum).Take(spanNum)) { if (JudgePointInRange(tmpStrike.Longitude, tmpStrike.Latitude)) { strikes_Standard.Strikes.Add(tmpStrike); } } } } else//个数不足spanNum { foreach (var tmpStrike in _strikes) { if (JudgePointInRange(tmpStrike.Longitude, tmpStrike.Latitude)) { strikes_Standard.Strikes.Add(tmpStrike); } } } }
//内部Dispose方法,真正试试资源释放工作 protected virtual void Dispose(bool disposing) { if (!m_disposed) { if (disposing) { // Release managed resources strikes_Standard = new LightningStrikes_Standard(); } // Release unmanaged resources m_disposed = true; } }
public override bool Equals(object obj) { if (obj == null || !(obj is BaseStrikeStandard)) { return(false); } else { LightningStrikes_Standard o = new LightningStrikes_Standard(); o = (LightningStrikes_Standard)obj; foreach (var tmp in o.Strikes) { if (!this.Strikes.Contains(tmp)) { return(false); } } return(true); } }