最近研究了一下如何根據位址查詢獲得經緯度,然後再由經緯度獲得兩點間距離的問題。
(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類裡面有計算兩點之間的距離這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多...