Ich muss einige räumlich korrelierte Datensätze komprimieren. Derzeit bekomme ich 1,2x-1,5x Kompression mit zlib, aber ich denke, es sollte möglich sein, mehr wie 2x zu bekommen. Die Datensätze haben verschiedene Felder, aber z.B. scheint zlib Probleme zu haben, Listen von Punkten zu komprimieren.
Die Punkte stellen ein Straßennetz dar. Sie sind Paare von 4-Byte-Festkommazahlen der Form XXXXYYYY. Wenn ein einzelner Datenblock 100 Punkte enthält, gibt es in der Regel nur wenige Kombinationen der oberen beiden Bytes von X und Y (räumliche Korrelation). Die unteren Bytes ändern sich jedoch ständig und müssen für zlib wie Zufallsdaten aussehen.
Ebenso haben die Datensätze 4-Byte-IDs, die in der Regel konstante High-Bytes und variable Low-Bytes haben.
Gibt es einen anderen Algorithmus, mit dem diese Art von Daten besser komprimiert werden kann? Ich verwende C++.
bearbeiten : Bitte keine weiteren Vorschläge zur Änderung der Daten selbst. Meine Frage bezieht sich auf automatische Kompressionsalgorithmen. Wenn jemand einen Link zu einer Übersicht über alle gängigen Kompressionsalgorithmen hat, werde ich das als Antwort akzeptieren.