0

我正在寻找一种数据结构来存储不规则的高程数据 {xi,yi,zi},以便快速查找 xy 范围内的点。

从我收集到的 kd 树应该适合这个吗?而且实施起来也相当简单?

但是,高程数据集中的点数可能非常庞大。因此,可能无法一次性处理所有点。相反,我的目标是将 xy 区域划分为图块并分别处理每个图块:

在此处输入图像描述

绿色矩形内的点是瓦片 1 所需的点。当我进入瓦片 2 时,我将需要以瓦片 2 为中心的绿色矩形内的点。仍然需要瓦片 1 周围绿色矩形中最右边的 2 点。如果需要,可以将其他点从内存中换出。此外,图块 2 还需要 4 个点。因此,kd 树可能不是最佳的,因为这需要我为每个新图块重建完整的树?R树会是更好的选择吗?

点本身应该以某种巧妙的格式存储在磁盘上,并在需要它们之前读入内存。在我开始处理 tile 1 之前,我可以告诉维护点的数据结构,接下来我将需要 tile 2,然后它可以开始在单独的线程中从磁盘读取必要的点。
我正在考虑使用较小的图块将点加载到数据结构中。例如图中的点可以划分为 16x16 的瓦片。

C/C++ 中是否有实现此功能的库?

4

0 回答 0