【发布时间】:2011-03-08 07:27:48
【问题描述】:
我需要压缩一些空间相关的数据记录。目前我正在使用 zlib 进行 1.2x-1.5x 压缩,但我认为应该有可能获得更多类似 2x 的压缩。数据记录有各种字段,但例如 zlib 似乎无法压缩点列表。
这些点代表一个道路网络。它们是 XXXXYYYY 形式的定点 4 字节整数对。通常,如果单个数据块有 100 个点,那么 X 和 Y 的前两个字节的组合(空间相关性)只会很少。但是底部字节总是在变化,并且对于 zlib 来说必须看起来像随机数据。
同样,记录有 4 字节的 ID,它们往往具有恒定的高字节和可变的低字节。
是否有其他算法可以更好地压缩此类数据?我正在使用 C++。
编辑:请不要再提出更改数据本身的建议。我的问题是关于自动压缩算法。如果有人有所有流行压缩算法概述的链接,我会接受它作为答案。
【问题讨论】:
-
数据是一系列记录,通常代表道路,每条道路都有一个点列表,以及其他信息,例如地址范围、ID、限速和指向存储的街道名称记录的指针别处。这些被打包成尽可能少的位,诚然,在某些情况下,这也可能会阻碍面向字节的 zlib。
-
还有一些其他数据是 99% 点,这就是我知道 zlib 没有很好地压缩点的原因。
-
我有一个压缩实用程序,尚未完成,但可以到达那里。您可以完全访问 (github.com/aunk/comb),它是真正压缩的准备者。如果你能把它记下来,我很乐意让你小有名气。我们可以分享我所追求的奖品。
-
我的反转字节查找,因此聚集的 0 和 1 的数量被更改为有限数量,以推动实际的压缩程序找到并使用这些模式
标签: c++ compression