天天看點

關于經緯度的兩個計算[Teaks&xgluxv]

一、

子午線周長(公裡)

 40008.548

赤道周長(公裡)

 40075.704

緯度

40008.548 / 360(度) = 111.135 公裡/度

40008.548 / (360*60)(分) = 1.85 公裡/分

40008.548 / (360*60*60)(秒) = 30.87 米/秒

經度

首先算相應經度位置的緯度圈長度=40075.704 * cos(經度)

然後方法相同,除度數就成

于是,比如北京40度

40075.704 * cos(40) = 30699.77

40075.704 * cos(40) / 360(度) = 85.277 公裡/度

40075.704 * cos(40) / 360*60)(分) = 1.42 公裡/分

40075.704 * cos(40) / 360*60*60)(秒) = 23.688 米/秒

附:

cos(a) = sin(90-a)

二、計算兩個點之間的距離 知道兩個點的經度和緯度

這個我用c#寫了一個函數

關于經緯度的兩個計算[Teaks&xgluxv]

        public static double GetDistance(double ox, double oy, double dx, double dy)

關于經緯度的兩個計算[Teaks&xgluxv]

        {

關于經緯度的兩個計算[Teaks&xgluxv]

            double wd1 = ox;

關于經緯度的兩個計算[Teaks&xgluxv]

            double wd2 = dx;

關于經緯度的兩個計算[Teaks&xgluxv]

            double jd1 = oy;

關于經緯度的兩個計算[Teaks&xgluxv]

            double jd2 = dy;

關于經緯度的兩個計算[Teaks&xgluxv]

            double R = 6.371229 * 1000000.0;

關于經緯度的兩個計算[Teaks&xgluxv]

            double x,y,outdis;

關于經緯度的兩個計算[Teaks&xgluxv]

            x = (jd2 - jd1) * Math.PI * R * Math.Cos(((wd1 + wd2) / 2) * Math.PI / 180) / 180;

關于經緯度的兩個計算[Teaks&xgluxv]

            y = (wd2 - wd1) * Math.PI * R / 180;

關于經緯度的兩個計算[Teaks&xgluxv]

            outdis = Math.Sqrt(x * x + y * y);

關于經緯度的兩個計算[Teaks&xgluxv]

            return outdis / 1000;

關于經緯度的兩個計算[Teaks&xgluxv]

        }

ox,oy是起始點的經緯度,dx,dy是終點的經緯度 輸出是公裡數

這裡我們都把地球作為理想狀态的,而且還是近似計算

自己做個記錄。

路漫漫其修遠兮 吾将上下而求索

本文轉自 lu xu 部落格園部落格,原文連結: http://www.cnblogs.com/dotLive/archive/2006/07/24/458438.html  ,如需轉載請自行聯系原作者