将3D卷的2D空间映射到1D空间(文件)

时间:2012-03-12 03:46:43

标签: math language-agnostic data-structures map mapping

我有一个三维体积的二维数组。该二维数组表示所有三维体积的俯视图。

我希望将这些数据保存到文件中,以便我可以非常快速地检索它。我的问题是二维数组可能会改变大小和形状;它并不总是很好和正方形。这往往会留下未使用的部分和相当多的部分。

我的检索方法目前正在使用卷级2D视图来定位需要加载的卷,但我很难想出一个好的数据结构和存储技术。我遇到的大多数方法都要求2D视图具有相同的长度和宽度,或者取决于长度或宽度。

值得注意的是,我想避免文件中未使用的空间,并且我还希望映射点具有良好的局部性。在映射点时,提出一种有效但产生奇怪关系的解决方案是很常见的。 {0,0}不能映射到除{0}之外的任何内容,{1,0}应该非常接近{0}而不是{34}。

你会如何以节省空间和时间的方式做到这一点?

2 个答案:

答案 0 :(得分:0)

我通过实现一些不同的空间填充曲线并使用它们将上部维度数据映射并转换为单维文件来解决这个问题。我发现希尔伯特曲线完美无缺。

答案 1 :(得分:0)

所以你说的只是保存模型空间的2d片段吗?

说实话,我认为最简单也许最好的事情就是保存一切。它使事情变得非常简单,你也可以很容易地找到文件中的特定位置。

然后,使用zlib或bz2等压缩文件流。如果你有很多零,它会压缩得很好。当我开始这样做时,它加快了我的HPC代码。

我可以想到几个更复杂的事情,但你真正想要实现的目标是什么?压缩会使它变小,并且有一个简单的格式很好。