如何过滤空间数据

时间:2009-07-25 11:17:18

标签: gis spatial

我有一个地图点数据库,我想限制显示最多显示约50个点。当用户放大时,可能会显示更多的点。

目前,我只是随机抽取结果集。这不是很好,因为可能存在空白区域,当放大时突然显示出一个点。

我的下一个想法是我可以创建一个10x5网格,并迭代结果。如果网格中的位置为空,我会显示一个点。这解决了以前的问题,但也没有让用户了解集中区域的位置。此外,如果用户决定缩小到整个世界,这是非常慢的。

目前,我没有使用任何空间算法对数据进行排序。我的计划是先让它正常工作,然后快速完成。读一下RTress,kd-trees和quad-trees,我找不到任何可以帮助我选择样本的“智能”子集的东西。看起来应该有某种广泛的第一次搜索,可以很容易地解决这个问题。

3 个答案:

答案 0 :(得分:3)

如何扩展您的原创想法。将其分解为网格,然后使用密度分析根据该区域中的要素数创建不同大小的点。这样,用户只需通过查看较大(或较小)的点即可更直观地了解特征密度。

至于加快速度,也许你可以为每个网格设置一个阈值。如果计数达到一定数量,则转到下一个网格。通过这种方式,您可以通过忽略高于人工设置阈值的点(您可以根据对数据的实证分析确定)来获得“最大”点并加快速度。

答案 1 :(得分:1)

迈克尔托德提出了一些很好的建议。为此+1。

我想添加(根据数据类型)您可以为地图点添加额外的属性。

例如,对于城市,您可以添加居住在其中的人数。 然后,根据缩放级别,您只显示特定大小的城市。或者更好的是,在选择算法中给予他们更高的分数。在空旷的地方,你仍会看到较小的地方,在拥挤的地区,你只能看到大城市。

这种方法适用于任何缩放级别,而每个缩放级别的预定义数据集只能以不连续的步骤工作。

答案 2 :(得分:0)

由于我只有几千个点,而且离线时间很长,我创建了一个算法来创建一个分散因子,通过它我可以对数据进行排序。

  1. 我从我的套装中随机点开始,给它一个n = 1的分数,并将其添加到选定的列表中。
  2. 然后我搜索所选列表中任何一点的更远点。
  3. 我采取这一点,给它一个n + 1的分数,将它添加到选择的列表,然后重复第二步,直到选中所有点。
  4. 在我的地图中,我选取了与范围过滤器匹配的所有点,并按排名升序对它们进行排序。无论滤镜还是缩放,我都会在屏幕上分布点。