优化地理位置搜索
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 行并不是一个很大的挑战。我相信它对于许多常见项目来说已经足够快了。以上是关于优化地理位置搜索的主要内容,如果未能解决你的问题,请参考以下文章
智能优化算法-麻雀搜索算法基于萤火虫结合麻雀搜索算法求解单目标优化问题附matlab代码