我正在使用python django开发基于位置的应用。我想根据纬度/经度找到两点之间的距离。我找到了几个答案但最终结果(距离)各不相同。请找我找到距离的最佳方法。感谢
答案 0 :(得分:2)
根据您的评论,我假设您需要计算不到50英里的短距离, 最简单的不太准确的方法是协调点距离公式,即aka,毕达哥拉斯距离公式
其中a,b显然是纬度,经度对。现在一度纬度= 68~69英里或111公里。请记住,这只是一个近似值。 只需将等式的结果乘以纬度里程。这给了一个相当粗略的过滤器,当我来到短距离时,我用它来按需要进行多次计算,使用google api显示结果可能相当昂贵(时间,带宽,配额明智)考虑到我应用程序需要每次搜索过滤大约100个结果。此外,我建议添加20%~30%的变化以包括实际道路距离。
确定。如果你还在读这个,那么你需要更准确的结果。
然后使用它,记得将此代码转换为python格式。我刚刚和我一起使用了javascript代码。
function getDistanceLatLong(lat1,Long1,lat2,Long2) {
var RK = 6371; // Radius of the earth in km
var RM = 3959;
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLong = deg2rad(Long2-Long1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = RK * c; // Distance in kiloMeters choose this or
var d = RM * c; // Distance in Miles
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}