首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定用户的lat液化天然气,如何从数千个lat液化天然气的数据库中找到最近的lat液化天然气?

给定用户的lat液化天然气,如何从数千个lat液化天然气的数据库中找到最近的lat液化天然气?
EN

Stack Overflow用户
提问于 2022-03-04 15:01:54
回答 3查看 140关注 0票数 0

我有数千个传感器在MySQL中的位置数据。我想识别最接近用户位置的传感器,并显示特定传感器的数据。所有的位置数据都以lat液化天然气的形式提供。

据我所知,一种方法是使用Haversine公式求出原点和所有传感器之间的位移,并选择距离最短的传感器。这里的问题是有成千上万的传感器。

有什么建议/线索吗?

EN

回答 3

Stack Overflow用户

发布于 2022-03-04 19:10:11

空间索引允许对任意特定距离内的点进行有效查询。当然,问题是人们可能不知道在特定情况下所需的搜索半径。不幸的是,较大的radius会导致效率低下的查询,而小的radius可能会导致根本不匹配。

一种可能的解决方案是以增大的半径进行搜索,直到搜索返回一些结果,然后找到其中最接近的结果。

本文描述了BigQuery的解决方案,需要对MySQL脚本方言进行一些调整:https://mentin.medium.com/nearest-neighbor-using-bq-scripting-373241f5b2f5

票数 1
EN

Stack Overflow用户

发布于 2022-03-04 19:54:48

不是您正在寻找的MySQL答案,而是Postgresql的流行的PostGIS扩展有一个内建K近邻算子类)。另外,请参阅它的文档。效果很好!

另外,我知道这个围棋图书馆,它允许您在构建带有传感器位置的四叉树之后,在内存中执行KNN。

票数 1
EN

Stack Overflow用户

发布于 2022-03-05 02:40:26

对于数千人来说,一个包含两个2列索引的简单包围框可能足够快。

要获得更高的速度,请参见SPATIAL索引。

有关这两种解决方案的详细信息,再加上两个更快的解决方案,请参见http://mysql.rjweb.org/doc.php/find_nearest_in_mysql

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71353271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档