两个位置之间的距离,以米为单位

时间:2019-10-13 18:16:54

标签: sql postgresql

我有一个表,其中包含对象的经度和纬度。我想找到我附近的物体(大约50米的距离)。

我将发送我的位置(纬度和经度),此查询将为我提供靠近我的对象。还有我可以使用哪个索引来提高速度?

2 个答案:

答案 0 :(得分:1)

答案并不简单,取决于您所需的准确性水平。 “简单”方法是使用勾股定理来计算“直线”距离。但这不考虑曲率,也不考虑海拔差异。

某些版本的SQL中有一些功能,但我不知道postgresql中有哪些功能。尝试查看此页面以获取许多良好的信息: https://kanoki.org/2019/02/14/how-to-find-distance-between-two-points-based-on-latitude-and-longitude-using-python-and-sql/

关于速度,您拥有哪些动态信息?纬度/经度变化?是时候从一个点到另一个了?您无法仅使用一个数据点来计算速度。

答案 1 :(得分:1)

Postgres有一个名为earthdistance的可选模块,您可以使用此模块。其中一个模块已安装,您可以执行以下操作:

select lat, long
from mytable
where point(lon, lat) <@> point(:mylon, :mylat) < 50 / 1609.344

其中(:mylon, :mylat)是代表您当前经度和纬度的参数。该查询为您提供了距离您不到50米的对象(1609.344被用作代表每英里米数的粗略估计)。

相关问题