我一直在試圖找到Java代碼示例,我可以將度量距離添加到特定座標點。加入2公里的A點的緯度和減2公里,到B點的經度通過添加度量距離獲取新的GPS座標
例如,我想獲得一個新的座標點(B點),即A點西北部
有沒有這樣的功能的示例源代碼?
我一直在試圖找到Java代碼示例,我可以將度量距離添加到特定座標點。加入2公里的A點的緯度和減2公里,到B點的經度通過添加度量距離獲取新的GPS座標
例如,我想獲得一個新的座標點(B點),即A點西北部
有沒有這樣的功能的示例源代碼?
獲得如果你不需要高精度計算一個用減法的新座標和距離都很小,你可以假設地球是大約R =6370公里球半徑。以弧度爲單位的緯度差異僅爲dNorth/R,經度差異爲dEast/R/cos(lat)。
爲了獲得更高的精度,您必須考慮到地球的形狀更像橢球體。
我這麼認爲,你可以使用大圓算法來做到這一點。
半徑爲R的球體表面上兩個給定點P1 =(lat1,lon1)和P2 =(lat2,lon2)之間的最短距離(測地線)爲大圓距。它可以用下式來計算:
dist = arccos(sin(lat1) · sin(lat2) + cos(lat1) · cos(lat2) · cos(lon1 - lon2)) · R (1)
例如,在(40.6892°,-74.0444°)=(0.7102弧度,-1.2923弧度)和在艾菲爾鐵塔自由女神像之間的距離(48.8583 °,2.2945°)=(0.8527弧度,0.0400弧度) - 假設地球的數字與半徑6371公里的球形approximationa - 是:
dist = arccos(sin(0.7102) · sin(0.8527) + cos(0.7102) · cos(0.8527) · cos(-1.2923 - 0.0400)) · 6371 km
= 5837 km
我發現,同時探索又如::
例如:
lat1: 34
lng1: 34
將在LAT15公里後,新的起點應該是這樣 new_lat1:34 +5公里 new_lng1:34(lng1將保持相同的,因爲我們只在緯度增加)
,這樣你們可以一分爲二的概率步驟::
使用加法計算座標。
然後在步驟1中
[This other post](http://stackoverflow.com/questions/5557706/calculating-distance-using-latitude-longitude-coordinates-in- kilometers-with-jav)應該有所幫助。 – assylias
@assylias帖子沒有考慮到經度「距離」取決於緯度。爲此,如果距離足夠短(可能<50公里),我將轉換爲Universal Traverse墨卡託,將其添加到Easting和Northing,然後轉換回您的任何系統。 – SJuan76
謝謝@assylias,但那不是我正在尋找的... – lyk