我需要编写一个 java 程序来从给定的 GPS 位置 P
中找到最近的一组(2 个位置)GPS 位置(来自一组 GPS 位置)是 GPS 位置。情况如图所示,这里所有标记的位置都是GPS位置。从给定位置 P
,我想找到最接近 P
的点集,在本例中为 (B,C)
。
如果有人能分享与此相关的算法或代码片段,那将非常有帮助。
最佳答案
你必须计算 P 和所有其他点之间的距离,然后取最小值。这是显而易见的部分。
困难的部分是计算两个 gps 坐标之间的距离。 GPS 使用 WGS84 测地线系统来表示地球上的点。
还有不同的方法来计算 ~sphere 上的距离(loxodromic distance 和 great circle distance 是主要的)。
欧几里德距离在球体上总是错误的(甚至不接近),因为在非零纬度处,1°Lat < 1°Lon ...
参见 Distance using WGS84-ellipsoid用于您自己的计算,或者如果您接受一个将为您完成计算的库,则为 GDAL。
您可以使用 GDAL 转换其他测地线系统中的点表示。例如,您可以在平面测地系统上投影点,然后使用 (x,y,z) 坐标,然后计算距离(或更好:平方距离 = x²+y²+z²)。
我认为 google map api 为 gps 坐标提供了一种易于使用的距离方法,如果您碰巧已经在使用它的话。
关于java:从给定的GPS位置找到最近的GPS位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765495/