我知道在数据库中使用PostGIS会很容易,但我只希望我的积分最多可以存活几分钟。
我想要一个可以存活1-5分钟的GPS点列表。当我添加一个新点时,我想计算旧点列表中新点的1-10km半径内的点列表。
仍然建议在PostGIS或Mongo等数据库中执行这些操作吗?
如果没有,怎么会在内存中计算这个呢?
答案 0 :(得分:0)
您可以计算四核,它类似于四叉树,而bing地图将其用于切片服务器。可以使用莫顿曲线计算四元组。你可以下载我的php类hilbert-curve @ phpclasses.org。
答案 1 :(得分:-1)
数据库非常慢,因为它们访问慢磁盘内存。
对于您的解决方案,您还需要Geo Spatial DB使用的索引技术(PostGis或Oracle-Spatial)。在您的情况下,您的索引保留在内存中:
这是一个(地理)空间索引。 作为现有技术,存在四叉树和R树。 (有时也使用kd树) 四叉树更容易实现,R-Tree的速度是四叉树的两倍。 我会使用四叉树。
你工作中最苛刻的部分是一个点的删除操作。 这很棘手,比插入慢得多。
一个解决方案,由四叉树的原作者推荐,我会尝试:将点标记为已删除,但将它们保留在四叉树中。 Evry x分钟重建整个四叉树,通过从旧数据库的数据创建一个新的四叉树,但只保留点仍然存在。
一旦点在四叉树中,范围搜索仅减少到“附近”点