当サイトで公開している等高線付き地図はOpenstreetMapのデータを利用しています。有志により新しいデータが追加され日々使いやすく便利になっていますが、同時にデータサイズも増えてきました。
地図データの肥大に伴いオンラインストレージ容量上限に迫ってきたため、より高圧縮な形式がないか探してみました。
圧縮形式の候補
現時点では地図データ圧縮に7zipを使用しています。7zip自体すでに圧縮率が高いのでこれ以上となるとかなり厳しいと考えていたのですが、いくつか候補となりそうなツールを見繕いました。
- 7zip(LZMA2)
現行の圧縮形式です。比較用。 - zip
最もメジャーな圧縮形式です。同じく比較用。 - rar
7zipと並ぶ有名所(だと思っている)です。 - ZPAQ
あまり馴染みのない形式ですがかなりの高圧縮率を誇るらしく、本記事の期待の星です。Windows環境での対応ツール(GUI)が存在しているのがGood。 - lrzip(Long Range ZIP)
rzipという方式とLZ77やZPAQを組み合わせて高圧縮を実現するツールとのこと。巨大ファイルの圧縮が得意らしい。 - cmix
海外の圧縮ベンチマークにて上位に輝く圧縮形式。圧縮処理に鬼のように時間を要するので参考用。 - nncp
同上。機械学習モデルを使用しているとのことです。CPUでも処理できますがCUDA環境があればそちらを推奨。
テスト環境
以下のPC環境でテストを行いました。
- CPU:Ryzen7 5700X
- Memory:64GByte(DDR4)
- Storage:HDD(WDC WD60EZAX)
テストデータは当サイトで公開しているGarminGPS向け地図データを使用しました。基本的には一番のデカブツである等高線付きファイル(約4GByte)を圧縮元としましたが、一部時間がかかりすぎる場合は別なファイルを対象にしました。
圧縮率ランキング(すけログ版)
実用圏内部門
というわけで、いきなり結果です。
調査した圧縮ツールの中で処理時間が実用圏内のものをランキングにしました。下方のものほど高圧縮です。
圧縮方式(Tool+Option) | サイズ [byte] | 処理時間 | 圧縮率 [%] |
---|---|---|---|
元データ | 3,956,146,176 | – | 100.00 |
zip -9 | 2,584,450,776 | 2m3.168s | 65.33 |
rar -m5 -mt4 | 2,530,083,464 | 3m2.604s | 63.95 |
7za a -bt -t7z -mx=9 -m0=lzma2:a=1:mf=bt4:d=512m:fb=273:mc=10000 -mmt=2 | 2,395,837,158 | 13m52.859s | 60.56 |
lrzip -z -L 9 -U -p 4 | 2,296,261,418 | 49m24.984s | 58.04 |
zpaq -m5 -t4 | 2,251,964,539 | 38m42.360s | 56.92 |
zpaq -m511 -t4 | 2,179,897,655 | 84m25.839s | 55.10 |

現行の7zip(7za)は圧縮率を上げるのに色々とオプションを追加しています。おかげで処理が遅くなったと思っていましたが、こうして比べてみると圧縮率と処理時間のバランスが良いですね。そしてzipが早い。
見事トップに輝いたZPAQは7zipより5%以上圧縮率を伸ばしています(ファイルサイズにして約200MByte)。処理時間は流石に長いですが、まぁ、バッチ処理で夜中に処理を走らせると考えれば実用範囲ではないでしょうか。
しかし、lrzipが思ったより伸びませんでした。処理内容的にZPAQと並ぶかもう少し縮むかすると思ったのですが。
超圧縮部門
処理時間がかかりすぎて実用的にはちょっと、、、という圧縮形式のランキングです。
圧縮ベンチマークにランキングされるツール群だけあって、ともかく1byteでもサイズを縮めようという執念を感じます。なお、圧縮処理に時間がかかりすぎるため、当サイトで公開している最も軽量なPOIのみを含む地図データを元データとしました。
圧縮方式(Tool+Option) | サイズ [byte] | 処理時間 | 圧縮率 [%] |
---|---|---|---|
元データ | 82,644,992 | – | 100.00 |
7za | 31,651,096 | – | 38.30 |
zpaq -m511 -t1 | 24,544,001 | 2m48.694s | 29.70 |
nncp | 21,926,866 | 277m50.538s | 26.53 |
cmix | 19,746,834 | 1065m12.149s | 23.89 |

比較用に7zipとZPAQの結果を掲載してあります。元データがPOIのみというのもあってか、全体的にかなりの圧縮率ですね。
cmixはZPAQからさらに6%近く圧縮しています。さすがの上位ランカーですが処理時間も凄まじいです。処理がシングルスレッドなのが痛い。この調子だと4GByteの地図データを圧縮するのに1ヶ月かかりそうです。。。
nncpはcmixよりかは圧縮率は伸びませんでした。が、このツールはオプションにパラメータらしきものが大量に存在するため、もしかすると本来はもっと縮むのかもしれません。また、今回の圧縮はCPUで処理しましたがCUDAを使用すればもっと高速で処理出来るはずです(うまく動作せず今回は試せませんでした)。
まとめ
ストレージ容量がほぼ100%、、、ということで、ここしばらく7zipのオプションをいじってどうにか圧縮率を上げれないか足掻いていました。これ以上はどうも頭打ちっぽいということで他の形式を調べてみた結果が本記事です。
cmixやnncpの超圧縮は浪漫がありますが、現状だとZPAQが一番よさそうですね。今すぐではないですが地図データの圧縮形式候補にいれたいと思います。
参考
本記事は以下の内容を参考にしました。
- Maximum compression benchmark: 7z, arc, zpaq vs rar, zipx
https://peazip.github.io/maximum-compression-benchmark.html - ZPAQ
https://www.mattmahoney.net/dc/zpaq.html - CMIX – Byron Knoll
https://www.byronknoll.com/cmix.html - lrzip – archlinux
http://wiki.archlinux.jp/index.php/Lrzip - NNCP: Lossless Data Compression with Neural Networks
https://bellard.org/nncp/ - Data Compresion Forum – encode.su
https://encode.su/forums/2-Data-Compression - Lossless Photo Compression Benchmark
http://qlic.altervista.org/LPCB.html
コメント