python : Which is the best way to find distance between two points based on latitude/longitude using python?

标签 python geopy

我正在使用 python django 开发一个基于位置的应用程序。我想根据纬度/经度找到两点之间的距离。我找到了几个答案,但每个答案的最终结果(距离)都不同。请帮我找到找到距离的最佳方法。谢谢

最佳答案

根据您的评论,我假设您需要计算小于 50 英里的短距离, 最简单的不太准确的方法是坐标点距离公式,又名毕达哥拉斯距离公式 enter image description here

其中 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)
}

关于 python : Which is the best way to find distance between two points based on latitude/longitude using python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47688277/

相关文章:

python - 如何使用用户条目更改文件名?

python - 在 python 中清空 multiprocessing.queue(-1) 的首选方法

python - 无法解析 Yahoo Finance API JSON 数据?包含代码(Python Flask)

python - 从 python 中的函数更新 ipywidget 下拉列表

python - 使用python计算CSV文件中的条目

python - Geopy 错误和超时

python - 谷歌地理编码 : points of interest within a specified radius

python - 让 Python CGI 调用 Perl CGI,传递原始信息(以限制对登录用户搜索私有(private) Mailman 文件)

python - 反向geopy地理编码 Pandas

python - 用于 Python 的 geopy openmapquest 抛出 GeocoderInsufficientPrivileges 错误