【发布时间】:2017-12-09 19:44:27
【问题描述】:
我有一个执行以下操作的应用程序:
- 接收设备的位置
- 获取分配给该设备的路线(POI 或兴趣点的集合)
- 确定设备是否靠近路线中的任何 POI
路由的 POI 可以是具有半径的点,在这种情况下,它应该检测设备是否在该点的半径内;或多边形,它应该检测设备是否在其中。
这是一个包含 3 个 POI 的路线示例,其中两个是不同半径的点,另一个是多边形:
https://jsonblob.com/285c86cd-61d5-11e7-ae4c-fd99f61d20b8
我当前的算法是用 PHP 和 MySQL 数据库编写的。当设备发送新位置时,脚本会将其路线的所有 POI 从数据库加载到内存中,然后遍历它们。对于点的 POI,它使用 Haversine 公式来查找设备是否在 POI 的半径内,对于多边形的 POI,它使用“多边形中的点”算法来查找设备是否在其中。
我想重写算法,目标是使用比当前更少的计算资源。我们每秒接收大约 100 个位置,每个位置都必须对照平均有大约 40 个 POI 的路线进行检查。
我可以使用任何语言和数据库来做到这一点,您会推荐哪些以获得最佳性能?
【问题讨论】:
标签: algorithm performance architecture geolocation geospatial