Exemple #1
0
 //这个方法好像没有调用的地方
 public float[] CalcPointPathLoss(IPropagationModel prop, IACell carrier, AntConfig ant, GeoXYLine xyLine, float resolution, float rxHeight, out Dictionary<string, object> modelDetail)
 {
     if (prop == null)
     {
         modelDetail = null;
         return new float[2];
     }
     AntConfig config = ant;
     IPropagationModel model = prop;
     SectionPathLossCalcParam param = new SectionPathLossCalcParam();
     param.TxAntennaHeight = config.Height;
     if (!(AntConfig.IS_ANTENNA_HEIGHT_INCLUDE_BUILDING || !this.GeoDataProvider.IGeoProvider.IsBuildingLoaded))
     {
         param.TxAntennaHeight += this.GeoDataProvider.GisInfo.GetValueByGeoXYPoint(xyLine.Points[0], DemDataType.Building, false);
     }
     param.RxAntennaHeight = rxHeight;
     param.Frequency = carrier.FreqBand.DLFrequency;
     param.MergeEdgeMaxDis = 80f;
     param.PropagModel = model;
     param.CalcResolution = resolution;
     param.CalcEndRadius = (float) xyLine.GetDistance();
     param.X = (float) xyLine.Points[0].X;
     param.Y = (float) xyLine.Points[0].Y;
     return this.CalcPointPathLoss(param, xyLine, carrier.FreqBand.ULFrequency, out modelDetail);
 }
 public override float CalculatePointPathLoss(SectionPathLossCalcParam param, GeoXYLine xyLine, out Dictionary<string, object> modelDetail)
 {
     base.CalculatePointPathLoss(param, xyLine, out modelDetail);
     RelayUEPropagationModel propModel = param.PropagModel as RelayUEPropagationModel;
     float distance= (float)(xyLine.GetDistance() / 1000);
     float prob=CalcProbability(propModel,distance);
     return GetPathLoss(propModel, distance, prob);
 }
Exemple #3
0
 private static void FindNearestCell(ref ISimCellBase nearestCell, ref float minDistance, ISimCellBase cellBase, GeoXYLine trancToUser)
 {
     float distance = (float)trancToUser.GetDistance();
     if (distance < minDistance && distance < GetCalcRadius(cellBase))
     {
         minDistance = distance;
         nearestCell = cellBase;
     }
 }
 public override float CalculatePointPathLoss(SectionPathLossCalcParam param, GeoXYLine xyLine, out Dictionary<string, object> modelDetail)
 {
     float num = 0f;
     modelDetail = null;
     ITURPPropagationModel iTURPModel = param.PropagModel as ITURPPropagationModel;
     float num2 = (float) Math.Log10((double) param.Frequency);
     float num3 = (float) Math.Log10(xyLine.GetDistance());
     num = ((iTURPModel.K2 + (iTURPModel.K1 * num2)) + (iTURPModel.N * num3)) + this.GetLf(iTURPModel);
     float num4 = 0f;
     return (num + (num4 * iTURPModel.KDiffraction));
 }
 public override float CalculatePointPathLoss(SectionPathLossCalcParam param, GeoXYLine xyLine, out Dictionary<string, object> modelDetail)
 {
     float num = 0f;
     modelDetail = null;
     KeenanMotleyPropagationModel model = param.PropagModel as KeenanMotleyPropagationModel;
     float num2 = (float) Math.Log10((double) param.Frequency);
     float num3 = (float) Math.Log10(xyLine.GetDistance() / 1000);
     num = ((model.K1 + (model.K2 * num2)) + (model.K3 * num3)) + (model.K4 * model.K5);
     float num4 = 0f;
     return (num + (num4 * model.KDiffraction));
 }
Exemple #6
0
 public short[] GetValueByGeoXYLine(List<GeoXYPoint> pointInGeoXYLine, GeoXYPoint geoXYPointStart, GeoXYPoint geoXYPointEnd, double precision, bool isDivInsert)
 {
     GeoXYLine line = new GeoXYLine(geoXYPointStart, geoXYPointEnd);
     double distance = line.GetDistance();
     int num2 = ((int) Math.Ceiling((double) (distance / precision))) + 1;
     int num3 = (geoXYPointEnd.X > geoXYPointStart.X) ? 1 : -1;
     int num4 = (geoXYPointEnd.Y > geoXYPointStart.Y) ? 1 : -1;
     double num5 = distance / ((double) (num2 - 1));
     double azimuthofLine = line.GetAzimuthofLine();
     List<short> list = new List<short>();
     for (int i = 0; i < num2; i++)
     {
         double num7 = num5 * i;
         double num8 = Math.Abs((double) (num7 * Math.Sin(azimuthofLine)));
         double num9 = Math.Abs((double) (num7 * Math.Cos(azimuthofLine)));
         double x = geoXYPointStart.X + (num3 * num8);
         double y = geoXYPointStart.Y + (num4 * num9);
         list.Add(this.GetValueByGeoXYPoint(x, y, isDivInsert));
         GeoXYPoint item = new GeoXYPoint(x, y);
         pointInGeoXYLine.Add(item);
     }
     return list.ToArray();
 }
Exemple #7
0
 private short[] DemDataTypeCheckByGeoXYLine(GeoXYLine geoXYLine, double precision, DemDataType demDataType, ref bool Flag)
 {
     if (this.GetRasterData(demDataType).Count == 0)
     {
         Flag = true;
         int num = 0;
         num = Convert.ToInt32(Math.Ceiling((double) (geoXYLine.GetDistance() / precision))) + 1;
         short[] numArray = new short[num];
         if (demDataType == DemDataType.Clutter)
         {
             for (int i = 0; i < num; i++)
             {
                 numArray[i] = -1;
             }
         }
         return numArray;
     }
     Flag = false;
     return null;
 }
 /// <summary>
 /// 计算点到点的路径损耗
 /// </summary>
 /// <param name="param"></param>
 /// <param name="xyLine"></param>
 /// <param name="modelDetail"></param>
 /// <returns></returns>
 public override float CalculatePointPathLoss(SectionPathLossCalcParam param, GeoXYLine xyLine, out Dictionary<string, object> modelDetail)
 {
     base.CalculatePointPathLoss(param, xyLine, out modelDetail);
     OkumuHataPropagationModel okumuHataPropagationModel = param.PropagModel as OkumuHataPropagationModel;
     float num2 = (float) Math.Log10((double) param.Frequency);
     float num3 = (float) Math.Log10((double) param.TxAntennaHeight);
     float distance = (float) (xyLine.GetDistance() / 1000);
     float num5 = (float) Math.Log10((double) distance);
     float num6 = this.AhrCalculate(param.Frequency, new float[] { param.RxAntennaHeight }, 0, okumuHataPropagationModel);
     float num7 = this.CellSelect(param.Frequency, okumuHataPropagationModel);
     return ((((((okumuHataPropagationModel.K1 + (okumuHataPropagationModel.K2 * num2)) - (okumuHataPropagationModel.K3 * num3)) + ((okumuHataPropagationModel.K4 - (okumuHataPropagationModel.K5 * num3)) * num5)) + num6) + num7) + (base.CalcDiffLoss(distance, base.m_AltitudeHeights.Length) * okumuHataPropagationModel.KDiffraction));
 }