位址獲得經緯度 再轉變成兩點間距離

2021-07-11 20:30:30 字數 2325 閱讀 5174

最近研究了一下如何根據位址查詢獲得經緯度,然後再由經緯度獲得兩點間距離的問題。

(1)首先如何根據位址去查詢經緯度

(2)獲得了經緯度如何在計算兩點之間的距離

(1)在使用api或者開發是,可以參考網上的一些文章,具體的如  ;

等等吧,如果覺得不好用可以繼續在網上找,我這裡借用一位仁兄的**:

//-------------------------》關鍵**根據位址獲得座標《--------------------------------  

public void getpoint(info_rescueteam shop)"+","+"\"";  

string a1=strs[1].split(s1, 2);  

//擷取小數點後8為

shop.setlatitudes(a1[0].substring(0,11));  

} catch (exception e)    

}  ..........乙個類似這樣的資料格式,具體的可以執行一下,就可以看到。

這樣通過處理就可以獲得相應的經緯度了。

(2)通過經緯度如何計算它們之間的距離

剛開始的想法是,將目標地點的經緯度和起始地的經緯度,兩者按照座標差的平方和的形式,即二維座標中兩點距離公式計算。汗顏啊,原諒我是個門外漢啊。

其實由球面相關計算公式,如何你也不慎了解,可以參考  。根據那個計算公式,可以計算出獲得兩點經緯度後,其「球面距離上的大概位址」。加了引號,因為隱隱約約感覺這個叫法有點不恰當。

r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+

sin(lat1*pi()/180 )*sin(lat2*pi()/180))

=distance 

如果是像導航那樣計算路途距離,這裡可能還是有問題的,很錯落;但是如果僅僅為了計算兩地乙個大概的距離,還是可以的。

private final double pi = math.pi;

private final double r=6370996.81;//地球半徑 m

//事故地點經緯度

private final static bigdecimal loc_lng = new bigdecimal(111.697329);

private final static bigdecimal loc_lat = new bigdecimal(36.565719);

//由經緯度計算距離公式

/*r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+

sin(lat1*pi()/180 )*sin(lat2*pi()/180))*/

bigdecimal t_lng  = new bigdecimal(double.parsedouble(listteam.get(i).getlongitudes()));

bigdecimal t_lat  = new bigdecimal(double.parsedouble(listteam.get(i).getlatitudes()));

/*t_lng =  t_lng.subtract(lng);

t_lat =  t_lat.subtract(lat) ;

t_lng = t_lng.pow(2);

t_lat = t_lat.pow(2);*/

//bigdecimal ti_dis = t_lng.add(t_lat) ;

double tid_lng = t_lng.doublevalue();

double tid_lat = t_lat.doublevalue();

double td_lng = lng.doublevalue();

double td_lat = lat.doublevalue();

double tid_dis = r*math.acos(math.cos(tid_lat*pi/180 )*math.cos(td_lat*pi/180)*math.cos(tid_lng*pi/180 -td_lng*pi/180)+math.sin(tid_lat*pi/180 )*math.sin(td_lat*pi/180));

distance_team[i] = tid_dis ;

(tid_lat,tid_lng) (td_lat,td_lng)

剛開始用了bigdecimal型別,然後感覺用double也可以吧。

小結,也許是用的東西久了,結果遇到個公式(由經緯度計算距離的那個)竟然研究了好久。以前自己數學還是挺好的,現在只知其然不知其所以然啊,需要加強數學功底啊。

經緯度互換 換算成公尺 兩點的經緯度計算兩點間的距離

gps座標系我本身不太了解它跟谷歌地圖經緯度有多大區別,於是搜了一下,看看他們的區別 地形圖座標系 我國的地形圖採用高斯 克呂格平面直角座標系。在該座標系中,橫軸 赤道,用 表示 縱軸 經線,用 表示 座標原點 經線與赤道的交點,用0表示。赤道以南為負,以北為正 經線以東為正,以西為負。我國位於北半...

根據兩點經緯度計算距離

這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯圈 構成這些圓圈的線段,叫做緯線。我們把赤道定為...

根據兩點經緯度計算距離

android sdk 中提供了location類裡面有計算兩點之間的距離這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多...