Пример #1
0
 /// <summary>
 /// 计算小矩形的中心点
 /// </summary>
 /// <param name="regionRN">小矩形区域</param>
 /// <returns></returns>
 public static PointForRN GetCenterPoint(RegionForRN regionRN)
 {
     PointForRN point = new PointForRN();
     //GeoXYPoint geoPoint = new GeoXYPoint();
     //point.GeoXYPoint = geoPoint;
     point.GeoXYPoint.X = (regionRN.PolygonRegion.Left + regionRN.PolygonRegion.Right) / 2;
     point.GeoXYPoint.Y = (regionRN.PolygonRegion.Top + regionRN.PolygonRegion.Bottom) / 2;
     //to be added
     return point;
 }
Пример #2
0
 /// <summary>
 /// 计算RegionList的重心
 /// </summary>
 /// <param name="regionList"></param>
 /// <returns></returns>
 public static PointForRN CalcRegionsBary(List<RegionForRN> regionList)
 {
     double x = 0;
     double y = 0;
     double weight = 0;
     PointForRN bary = new PointForRN();
     foreach (RegionForRN region in regionList)
     {
         region.PointList = CalcWeight(region.PointList);
         foreach (PointForRN pt in region.PointList)
         {
             weight += pt.Weight ;
             x = pt.GeoXYPoint.X * pt.Weight + x;
             y = pt.GeoXYPoint.Y * pt.Weight + y;
         }
     }
     if (weight != 0)
     {
         GeoXYPoint point = new GeoXYPoint();
         point.X = x / weight;
         point.Y = y / weight;
         double tempDis = double.MaxValue;
         foreach (RegionForRN rg in regionList)
         {
             foreach (PointForRN pt in rg.PointList)
             {
                 double distance = CalcDistance(point, pt.GeoXYPoint);
                 if (tempDis > distance)
                 {
                     bary = pt;
                     tempDis = distance;
                 }
             }
         }
     }
     return bary;
 }
Пример #3
0
 /// <summary>
 /// 合并距离近的点
 /// </summary>
 /// <param name="point1"></param>
 /// <param name="point2"></param>
 /// <returns></returns>
 public static PointForRN CalculateBaryForPoints(PointForRN point1, PointForRN point2)
 {
     PointForRN point = new PointForRN();
     point.GeoXYPoint.X = (point1.GeoXYPoint.X * point1.Rsrp + point2.GeoXYPoint.X * point2.Rsrp) / (point1.Rsrp + point2.Rsrp);
     point.GeoXYPoint.Y = (point1.GeoXYPoint.Y * point1.Rsrp + point2.GeoXYPoint.Y * point2.Rsrp) / (point1.Rsrp + point2.Rsrp);
     return point;
 }