2016-06-13 172 views
0

如何识别具有LAT,LONG坐标格式的点是否靠近其他点。如何查找给定坐标的最近点

可以说,我想找到附近所有点:

-38.9086621 ,-68.082214

这是在不到1公里的距离。我已经知道如何在给定象限中找到坐标,但不知道如何在点附近找到象限。

+1

如果你需要的精度,你应该变换地理坐标为指标参照系统(如EPSG:3857),然后你可以用简单的数学。你可以看看proj4js(http://proj4js.org)。 –

+0

@MarcCompte您在测量距离时做了什么样的精度提升?在大地测量工作角度或距离测量中,补偿,测量误差......在全球坐标系统(例如ECEF)中是可取的,以避免有关参考框架的错误。 –

+1

@JoseHermosillaRodrigo我们谈论距离。两点之间的距离是飞机上的一项指标。地理坐标是三维的。除了从3D转换到平面以外,没有其他方法可以计算度量距离。当然,你可以使用基本的三角函数来做到这一点,但是假设地球是一个完美的球体,这很少像使用椭球体(对地球3D形状更复杂的近似)一样精确。这就是为什么转换是实现高精度距离计算的关键,除了使用激光测量。 –

回答

0

可以使用正弦表达式计算两个给定坐标之间的距离。计算出的距离是给定坐标(直线)之间的直接连接。

JavaScript示例(Source):

var R = 6371e3; // meters 
var lat1Radians = lat1.toRadians(); 
var lat2Radians = lat2.toRadians(); 
var deltaLat = (lat2-lat1).toRadians(); 
var deltaLon = (lon2-lon1).toRadians(); 

var a = Math.sin(deltaLat/2) * Math.sin(deltaLat/2) + 
     Math.cos(lat1Radians) * Math.cos(lat2Radians) * 
     Math.sin(deltaLon/2) * Math.sin(deltaLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 

var d = R * c; 
+0

请避免使用非拉丁字母作为变量名称。可能导致很多问题;) – veritas

+1

刚刚从源复制它,但它现在已被更正。谢谢 – KRONWALLED