はじめに
これまでの記事では、洪水浸水想定区域データの取得から可視化までを扱ってきました。
前回の記事では、そのデータを統合し、
都道府県単位でLeaflet上に表示するところまで進めました。
ただし、統合後のGeoJSONは約85MBとなり、表示はできるものの、
読み込みや描画の重さが気になる状態でした。
そこで今回は、このGeoJSONをベースにして、実際に軽量化を行います。
今回の内容
同じGeoJSON(約85MB)に対して、以下の2パターンを試します。
- GeoJSONのまま軽量化する(simplify)
- TopoJSONに変換する
比較するポイントはシンプルです。
- ファイルサイズ
- 見た目の変化
- 表示の体感
使用するデータ
前回作成した、河川単位のGeoJSONを統合したファイルを使用します。
- ファイル名:tokyo_flood_merged.geojson
- サイズ:約85MB
このファイルを元データとして、別ファイルに加工していきます。
パターン①:GeoJSONのまま軽量化する
simplify の実行
今回は mapshaper の simplify を使用します。
座標の丸め(precision)は行わず、形状の簡略化のみを行います。
mapshaper data/output/tokyo_flood_merged.geojson \
-simplify 10% \
-o data/output/pattern1/tokyo_flood_simplified.geojson
ファイルサイズの変化
85MB → 20MB(約76%削減)
大きく軽量化できていることが分かります。
見た目の変化
全体としての形状はほぼ維持されていますが、
細かい境界の表現は簡略化されています。
今回のデータはメッシュ(格子)由来のため、
元々の境界は階段状になっていますが、
simplifyによって頂点が削減され、より単純な形状になっています。
パターン②:TopoJSONに変換する
TopoJSONへの変換
同じGeoJSONから、TopoJSONに変換します。
mapshaper data/output/tokyo_flood_merged.geojson \
-o format=topojson data/output/pattern2/tokyo_flood.topojson
ファイルサイズの変化
85MB → 27MB(約68%削減)
こちらも十分に軽量化されています。
見た目について
TopoJSONは構造を変えることでデータを圧縮する形式のため、
見た目自体はほとんど変化しません。
軽量化の仕組みについては、以下の記事で整理しています。
結果の比較
今回の結果をまとめると、次のようになります。
| データ形式 | ファイル | サイズ | 削減率 |
|---|---|---|---|
| 元データ | GeoJSON | 85MB | - |
| パターン① | GeoJSON(simplify) | 20MB | 約76%削減 |
| パターン② | TopoJSON | 27MB | 約68%削減 |
どちらの方法でも軽量化の効果はありましたが、
今回の条件では simplify のほうがより小さなサイズになりました。
一方で、TopoJSONは構造による最適化であり、
データの内容や処理の組み合わせによって結果は変わります。
まとめ
今回は、同じGeoJSONに対して2つの軽量化手法を試してみました。
- simplify:85MB → 20MB(約76%削減)
- TopoJSON:85MB → 27MB(約68%削減)
どちらも十分な軽量化効果がありましたが、
今回の条件では simplify のほうがより小さなサイズになりました。
simplify は形状を削減する手法、
TopoJSONは構造を変換する手法であり、それぞれアプローチが異なります。
そのため、どちらが優れているというよりも、
データの性質や用途に応じて使い分けることになります。
今回の検証により、GeoJSONでも十分に軽量化できること、
またTopoJSONでも構造を変えることでサイズを抑えられることが確認できました。


