我正在寻找一个数据结构来存储不规则的高程数据{xi,yi,zi},这有助于快速查找xy范围内的点。
从我收集的kd树应该适合这个?而且实施起来也相当简单?
然而,高程数据集中的点数可能很大。因此,可能无法一次性处理所有点。相反,我的目标是将xy区域划分为区块并分别处理每个区块:
绿色矩形内的点是图块1所需的点。当我移动到图块2时,我将需要以图块2为中心的绿色矩形内的点。图块1周围绿色矩形中的最右边2点仍然是需要。如果需要,其他点可以换掉内存。此外,瓷砖2还需要4个点。 因此,kd树可能不是最佳的,因为这需要我为每个新的tile重建完整的树? R树会是更好的选择吗?
这一点应该以一种巧妙的格式存储在磁盘上,并在需要之前读入内存。在我开始处理tile 1之前,我可以告诉数据结构保持点,接下来我将需要tile 2然后它可以开始从单独的线程中从磁盘读取必要的点。
我正在考虑使用较小的瓷砖将点加载到数据结构中。例如,图中的点可以分为16x16个图块。
C / C ++中是否有任何实现此功能的库?