php計算經緯度之間相差多少公里

2021-05-05 19:20:39 字數 5917 閱讀 8467

1樓:當十文

//system.out.println(getdistance(116, 40, 121, 31));//1097.849177547613

//根據經緯度計算兩人距離

//$lon1、2經度

//$lat1、2緯度

//單位米

function getdistance($lon1,$lat1,$lon2,$lat2)

echo getdistance(116,40,121,31);

另外有一個js版的

/*** caculate the great circle distance

* @param lat1

* @param lng1

* @param lat2

* @param lng2

*/function getgreatcircledistance(lat1,lng1,lat2,lng2)

2樓:龍氏風采

//php 計算地圖上兩個座標之間的距離

define('earth_radius', 6378.137);//地球半徑,假設地球是規則的球體

define('pi', 3.1415926);

/*** 計算兩組經緯度座標 之間的距離

* params :lat1 緯度1; lng1 經度1; lat2 緯度2; lng2 經度2; len_type (1:m or 2:km);

* return m or km

*/function getdistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)

return round($s, $decimal);

}echo getdistance(39.908156,116.4767, 39.908452,116.450479, 1);//輸出距離/米

3樓:z的迷糊

calculate the distance

*/ $calclongitude = $lng2 - $lng1;

$calclatitude = $lat2 - $lat1;

$stepone = pow(sin($calclatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calclongitude / 2), 2);

$steptwo = 2 * asin(min(1, sqrt($stepone)));

$calculateddistance = $earthradius * $steptwo;

return round($calculateddistance);

} 方法二:

//php 計算地圖上兩個座標之間的距離

define('earth_radius', 6378.137);//地球半徑,假設地球是規則的球體

define('pi', 3.1415926);

/*** 計算兩組經緯度座標 之間的距離

* params :lat1 緯度1; lng1 經度1; lat2 緯度2; lng2 經度2; len_type (1:m or 2:km);

* return m or km

*/function getdistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)

return round($s, $decimal);

}echo getdistance(39.908156,116.4767, 39.908452,116.450479, 1);//輸出距離/米

注:只需輸入經緯度值即可,套入公式就好。

4樓:

function distancedesc($selflat, $selflng, $youlat, $youlng)

如何計算經緯度之間的距離?

5樓:八零後電影院

計算經緯度之間的距離方法如下:

計算地球上經緯度之間的距離d,已知地球上兩點的經度、緯度:(x1,y1), (x2,y2),其中x1,x2為經度,y1,y2為緯度;

視計算程式需要轉化為弧度(*3.1415926/180)地球半徑為r=6371.0 km,則兩點距離d=r*arcos[cos(y1)*cos(y2)*cos(x1-x2)+sin(y1)*sin(y2)]。

假設在中國某地,杆影最短時是中午13點20分,且杆長與影長之比為1,則可知該地是北緯45°(tgα=1),東經100°(從120°裡1小時減15°,4分鐘減1°)杆長與影長之比需查表求α。再算兩至日經度的演算法不變 緯度在北半球冬至α+23.5°,夏至α-23.

5°在任意一天加減修正值即可。

經緯分度:

經度分為360度,每15度1個時區,其中0度的叫本初子午線,是第一個進入新一天的地方,然後向西每過1個時區就相差1小時。例如是早上5點,那麼向西一個時區就是早上4點,再過1個時區就是早上3點,依此類推,向東則相反,一直到本初子午線。

緯度赤道的緯度為0°,將行星平分為南半球和北半球。緯度是指某點與地球球心的連線和地球赤道面所成的線面角,其數值在0至90度之間。位於赤道以北的點的緯度叫北緯,記為n,位於赤道以南的點的緯度稱南緯,記為s。

緯度數值在0至30度之間的地區稱為低緯地區,緯度數值在30至60度之間的地區稱為中緯地區,緯度數值在60至90度之間的地區稱為高緯地區。

6樓:匿名使用者

計算兩點距離的如下公式:

c = sin(mlata)*sin(mlatb)*cos(mlona-mlonb) + cos(mlata)*cos(mlatb)

distance = r*arccos(c)*pi/180

這裡,r和distance單位是相同,如果是採用6371.004千米作為半徑,那麼distance就是千米為單位,如果要使用其他單位,比如mile,還需要做單位換算,1千米=0.621371192mile

如果僅對經度作正負的處理,而不對緯度作90-latitude(假設都是北半球,南半球只有澳洲具有應用意義)的處理,那麼公式將是:

c = sin(lata)*sin(latb) + cos(lata)*cos(latb)*cos(mlona-mlonb)

distance = r*arccos(c)*pi/180

以上通過簡單的三角變換就可以推出。

如果三角函式的輸入和輸出都採用弧度值,那麼公式還可以寫作:

c = sin(lata*pi/180)*sin(latb*pi/180) + cos(lata*pi/180)*cos(latb*pi/180)*cos((mlona-mlonb)*pi/180)

distance = r*arccos(c)*pi/180

也就是:

c = sin(lata/57.2958)*sin(latb/57.2958) + cos(lata/57.

2958)*cos(latb/57.2958)*cos((mlona-mlonb)/57.2958)

distance = r*arccos(c) = 6371.004*arccos(c) kilometer = 0.621371192*6371.

004*arccos(c) mile = 3958.758349716768*arccos(c) mile

private const double earth_radius = 6378.137;//地球半徑

private static double rad(double d)

public static double getdistance(double lat1, double lng1, double lat2, double lng2)

7樓:蓋辜苟

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

004千米。如果我們假設地球是一個完美的球體,那麼它的半徑就是地球的平均半徑,記為r。

如果以0度經線為基 準,那麼根據地球表面任意兩點的經緯度就可以計算出這兩點間的地表距離(這裡忽略地球表面地形對計算帶來的誤差,僅僅是理論上的估算值)。

設第一點a的經 緯度為(lona, lata),第二點b的經緯度為(lonb, latb),按照0度經線的基準,東經取經度的正值(longitude),西經取經度負值(-longitude),北緯取90-緯度值(90- latitude),南緯取90+緯度值(90+latitude),則經過上述處理過後的兩點被計為(mlona, mlata)和(mlonb, mlatb)。那麼根據三角推導,可以得到計算兩點距離的如下公式:

c = sin(mlata)*sin(mlatb)*cos(mlona-mlonb) + cos(mlata)*cos(mlatb)

distance = r*arccos(c)*pi/180

這裡,r和distance單位是相同,如果是採用6371.004千米作為半徑,那麼distance就是千米為單位,如果要使用其他單位,比如mile,還需要做單位換算,1千米=0.621371192mile

如果僅對經度作正負的處理,而不對緯度作90-latitude(假設都是北半球,南半球只有澳洲具有應用意義)的處理,那麼公式將是:

c = sin(lata)*sin(latb) + cos(lata)*cos(latb)*cos(mlona-mlonb)

distance = r*arccos(c)*pi/180

以上通過簡單的三角變換就可以推出。

如果三角函式的輸入和輸出都採用弧度值,那麼公式還可以寫作:

c = sin(lata*pi/180)*sin(latb*pi/180) + cos(lata*pi/180)*cos(latb*pi/180)*cos((mlona-mlonb)*pi/180)

distance = r*arccos(c)*pi/180

也就是:

c = sin(lata/57.2958)*sin(latb/57.2958) + cos(lata/57.

2958)*cos(latb/57.2958)*cos((mlona-mlonb)/57.2958)

distance = r*arccos(c) = 6371.004*arccos(c) kilometer = 0.621371192*6371.

004*arccos(c) mile = 3958.758349716768*arccos(c) mile

附:c#**:

private const double earth_radius = 6378.137;//地球半徑

private static double rad(double d)

public static double getdistance(double lat1, double lng1, double lat2, double lng2)

經緯度是經度與緯度的合稱組成一個座標系統。稱為地理座標系統,它是一種利用三度空間的球面來定義地球上的空間的球面座標系統,能夠標示地球上的任何一個位置。

經緯度換算成米:

緯度分為60分,每一分再分為60秒以及秒的小數。

緯度線投射在圖上看似水平的平行線,但實際上是不同半徑的圓。有相同特定緯度的所有位置都在同一個緯線上。

赤道的緯度為0°,將行星平分為南半球和北半球。

緯度是指某點與地球球心的連線和地球赤道面所成的線面角,其數值在0至90度之間。位於赤道以北

點的緯度叫北緯,記為n,位於赤道以南的點的緯度稱南緯,記為s。

緯度數值在0至30度之間的地區稱為低緯地區,緯度數值在30至60度之間的地區稱為中緯地區,緯度數值在60至90度之間的地區稱為高緯地區。

赤道、南迴歸線、北迴歸線、南極圈和北極圈是特殊的緯線。

緯度1秒的長度:

地球的子午線總長度大約40008km。平均:

緯度1度 = 大約111km

緯度1分 = 大約1.85km

緯度1秒 = 大約30.9m

經緯度的度分秒怎麼計算,經緯度的度分秒怎麼算

經偉度的度分秒的換算關係如下 1划算關係 一度 60分 一分 60秒 和時間一樣,以回60為係數。這樣就答相當好計算了。2換算舉例 有了如上的基礎,要划算經偉度的關係,就相當簡單了。一般情況下,換算原理是這樣的 把度的數值中的小數點的轉換成為分,取分之整數,再把分的小數轉換成為秒。例如 31.876...

武漢經緯度是拜託啦,武漢的經緯度是?

武漢位於東經113 41 來 115 05 北自緯29 58 31 22 之bai間。武漢是湖北省會 du中部六省唯一的副省級zhi市和特大dao城市 中國中部地區的中心城市,全國重要的工業基地 科教基地和綜合交通樞紐。全市下轄13個市轄區,3個國家級開發區,總面積8494.41平方公里,佔湖北省面...

關於地理經緯度的表,關於地理的經緯度

緯度 起始線 赤道開始 極點結束 劃分規律 與地軸垂直並且環繞地球一週的圓圈。度數範圍 180 度數遞變規律 從赤道向南北遞增 經度 起始線 本初子午線開始 180度經線結束劃分規律 連線南北兩極,並且與緯線垂直相交的半圓度數範圍 360 度數遞變規律 0 向西向東各增大到180 本初子午線 由0度...