0

我知道在数据库中使用 PostGIS 很容易做到这一点,但我只希望我的积分最多能存活几分钟。

我想有一个生活 1-5 分钟的 GPS 点列表。当我添加一个新点时,我想从老化列表中计算新点半径 1-10 公里内的点列表。

还是建议在 PostGIS 或 Mongo 这样的数据库中执行这些操作?

如果不是,人们将如何在内存中计算这个?

4

2 回答 2

0

您可以计算四键,它类似于四叉树,并且 bing 地图将其用于切片服务器。可以用莫顿曲线计算四键。你可以下载我的 php 类 hilbert-curve@phpclasses.org。

于 2013-11-10T18:28:36.977 回答
-1

数据库非常慢,因为它们访问的磁盘内存很慢。

对于您的解决方案,您还需要地理空间数据库使用的索引技术(PostGis 或 Oracle-Spatial)。在您的情况下,您的索引保留在内存中:

它是一个(地理)空间索引。有四叉树和 R-Tree 作为最先进的技术。(有时也使用 kd-tree)四叉树更容易实现,R-Tree 可以比四叉树快两倍。我会使用四叉树。

您工作中最苛刻的部分是对一个点的删除操作。这很棘手,而且比插入要慢得多。

一种解决方案,由四叉树的原作者推荐,我会尝试:将点标记为已删除,但将它们保留在四叉树中。每 x 分钟重建整个四叉树,从旧的数据创建一个新的,但只保留仍然存在的点。

一旦点在四叉树中,范围搜索就减少到“附近”的点

于 2013-11-10T16:37:40.907 回答