需求说明
电子围栏
- 根据坐标筛选处附近的坐标
- 支持多边形数据存储
- 查找当前的坐标落在哪个几何图形内(圆,多边形)
现有解决方案
- mysql 自定义函数计算
- mysql geo索引
- mongodb geo索引
- postgresql PostGis索引
- redis geo
- ElasticSearch
- 高德地图开放接口
最终选型结果mongodb
技术选型简要分析
mysql
搜索资料极少,看来很少有人选用
mysql 8 之前版本
但使用SQL语句进行查询的缺点也显而易见,每条SQL的计算量都会非常大,有时候要十几秒才能出结果,性能将会是严重的问题。
mysql 8
mysql 有专门支持位置的存储类型 geo 索引,但是检索依然感觉稍微复杂,并且效率还是有些问题。
redis
-
添加 获取 地理位置的坐标。
-
计算两个位置之间的距离。
-
根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
-
根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
缺点:不支持多边形,矩形 相关的搜索