求 ArcGis 测量两点距离的算法,最好的计算球面,平面也可以。坐标是经纬度的。

解决方案 »

  1.   

    对于p1、p2两点,google的算法是:
            public static double GetDistance(this LatLng p1, LatLng p2)
            {
                double radLat1 = p1.Latitude * Math.PI / 180;
                double radLat2 = p2.Latitude * Math.PI / 180;
                double a = radLat1 - radLat2;
                double b = (p1.Longitude - p2.Longitude) * Math.PI / 180;
                double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
                s = s * 6378137;
                return s;
            }使用墨卡托投影的计算方法应该都是如此(可能只是地球半径不同)。