根據坐標經緯度計算兩點之間的距離


地球是一個近乎標准的橢球體,它的赤道半徑為6378.140千米,極半徑為 6356.755千米,平均半徑6371.004千米。

 

        /// <summary>
        /// 給定的經度1,緯度1;經度2,緯度2. 計算2個經緯度之間的距離。
        /// </summary>
        /// <param name="lat1">緯度1</param>
        /// <param name="lon1">經度1</param>
        /// <param name="lat2">緯度2</param>
        /// <param name="lon2">經度2</param>
        /// <returns>距離(公里、千米)</returns>
        private double Distance(double lat1, double lon1, double lat2, double lon2)
        {
            double EARTH_RADIUS = 6371.0;

            //用haversine公式計算球面兩點間的距離。
            //經緯度轉換成弧度
            lat1 = ConvertDegreesToRadians(lat1);
            lon1 = ConvertDegreesToRadians(lon1);
            lat2 = ConvertDegreesToRadians(lat2);
            lon2 = ConvertDegreesToRadians(lon2);

            //差值
            var vLon = Math.Abs(lon1 - lon2);
            var vLat = Math.Abs(lat1 - lat2);

            // h is the great circle distance in radians, great circle
            // 就是一個球體上的切面,它的圓心即是球心的一個周長最大的圓。
            var h = HaverSin(vLat) + Math.Cos(lat1) * Math.Cos(lat2) * HaverSin(vLon);

            var distance = 2 * EARTH_RADIUS * Math.Asin(Math.Sqrt(h));

            return distance;
        }

        /// <summary>
        /// 將角度換算為弧度。
        /// </summary>
        /// <param name="degrees">角度</param>
        /// <returns>弧度</returns>
        private double ConvertDegreesToRadians(double degrees)
        {
            return degrees * Math.PI / 180;
        }

        /// <summary>
        /// 將弧度換算為角度。
        /// </summary>
        /// <param name="radian"></param>
        /// <returns></returns>
        private double ConvertRadiansToDegrees(double radian)
        {
            return radian * 180.0 / Math.PI;
        }

        /// <summary>
        /// HaverSin
        /// </summary>
        /// <param name="theta"></param>
        /// <returns></returns>
        private double HaverSin(double theta)
        {
            var v = Math.Sin(theta / 2);
            return v * v;
        }
View Code

 

 

在線計算經緯度距離工具 http://www.gpsspg.com/distance.htm

 

 

參考 https://blog.csdn.net/xiejm2333/article/details/73297004

https://www.cnblogs.com/zhoug2020/p/3950933.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM