社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

如何使用MySQL使用经度和纬度列查找行之间的距离?

CompuGenuis Programs • 4 年前 • 498 次点击  

我有一个数据库,每行有lng和lat列。如何生成一个SQL查询,该查询将按距离顺序返回行?我将比较lat和液化天然气与外部价值。我将使用Python用PyMySQL发送SQL查询。如果这不可能,我用Python编写了haversine公式,我可以这样计算距离,但我不想浪费时间在数据库中的所有条目之间循环,因为数据库非常大。

示例表:

   long ============ lat
============================
1. -74 ============= 84
2. -87 ============= 75

我所期待的。我给出一个长的lat坐标,它将它与数据库中的所有行进行比较,并按最接近我提供的坐标的顺序返回行。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52695
 
498 次点击  
文章 [ 2 ]  |  最新文章 4 年前
The Impaler
Reply   •   1 楼
The Impaler    5 年前

首先,我将Haversine函数实现为MySQL函数,如:

create function haversine_distance (
  float long1, 
  float lat1,
  float long2,
  float lat2)
returns float deterministic
return ... -- formula here

一旦有了它,查询就变得非常简单。例如经度 10.21 /纬度 -50.45 ,查询将如下所示:

select *
from my_table
order by haversine_distance(long, lat, 10.21, -50.45) asc
Hopper
Reply   •   2 楼
Hopper    5 年前

查询需要包含距离的计算字段列。您的ORDER BY将使用计算字段。