我一直在试图找到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