优化地理位置搜索

Posted

技术标签:

【中文标题】优化地理位置搜索【英文标题】:Optimizing geolocation search 【发布时间】:2016-08-03 16:49:22 【问题描述】:

我是这方面的新手,如果有人可以向谷歌提供链接或关键字,我会很高兴。 我将拥有数以万计的带有地理数据值(如点、线和多边形)的事件,并且需要一个快速命中测试算法,该算法将找到与给定近似值重叠给定点/线/多边形的所有位置。同时我需要通过各种属性过滤这些事件,所以查询应该过滤地理数据和自定义字段。例如,我想知道距离特定地点 N 公里内有哪些城市、河流或山区。需要将数据持久化在 SQL 服务器中但可以考虑不同的方式。此类任务的常用方法是什么?

【问题讨论】:

【参考方案1】:

SQL方式似乎很常见,也不是那么难用。

保存数据后,您可以使用以下功能以相对距离提取兴趣点:

SELECT tblcity.city, tblcity.latitude, tblcity.longitude, 
truncate((degrees(acos( sin(radians(tblcity.latitude)) 
* sin(radians(45.266708)) 
+ cos(radians(tblcity.latitude)) 
* cos(radians(45.266708)) 
* cos(radians(-73.616257 - tblcity.longitude) ) ) ) 
* 69.09*1.6),1) as distance 
FROM tblcity HAVING distance < 10 ORDER BY distance desc 

取自https://***.com/a/2695446/6660122

编辑:正如您已经了解 SQL 并且需要 SQL 可以提供的额外功能,我肯定会这样做!

【讨论】:

我知道如何在 SQL 中编程,但这对数万条记录是否能快速(毫秒)工作? 嗯,我取决于很多因素,但是 10000 行并不是一个很大的挑战。我相信它对于许多常见项目来说已经足够快了。

以上是关于优化地理位置搜索的主要内容,如果未能解决你的问题,请参考以下文章

优化地理搜索查询

优化位置搜索mysql脚本

地理数据搜索的优化

智能优化算法-麻雀搜索算法基于萤火虫结合麻雀搜索算法求解单目标优化问题附matlab代码

潮流计算基于matlab粒子群算法优化电力系统潮流计算含Matlab源码 2157期

LSTM回归预测基于matlab布谷鸟算法优化LSTM回归预测含Matlab源码 2037期