行政界の地図をLeafletでオンライン処理して表示する場合、(サイズにもよるが、)GeoJSONだと重くなる。
この点、GeoJSONをギュッと圧縮したTopoJSONならば、ギュンと改善される。
TopoJSONからGeoJSONへ変換することも可能。
エディタでいじる場合、緯度・経度が読めるGeoJSONのほうが分かりやすい。というかTopoJSONはいじれない。
GeoJSONからTopoJSONへ
さて、どのようにTopoJSONへ変換したらよいか。
全般的にTopoJSONに関する情報はあまり多くない。
npmを使ってインストールできる、ということで、それだけのために
Node.js(nodejs.org/)をダウンロードしてインストール。
Node.jsは、ブラウザの外でも(≒サーバーでも)使えるJavaScript。
npm Node Package Managerは、読んで英字の如くNode.jsのパッケージ・マネージャー。
コマンドプロンプトから
npm install -g topojson
でTopoJSONツールのインストール。
以前は、
topojson -o polbnda_jpn.topojson polbnda_jpn.geojson
で変換できたが、今は、
geo2topo polbnda_jpn.geojson > polbnda_jpn.topojson
といった具合に大きく変わっている。
以前は、
topojson -p adm_code -p nam -p laa -p pop -o polbnda_jpn.topojson polbnda_jpn.geojson
で必要な属性(上の場合、adm_code列、nam列、laa列、pop列)が残り、
topojson -p -o polbnda_jpn.topojson polbnda_jpn.geojson
で全ての属性が残り、
-pをつけないと図形情報しか残らない、という仕様だった。
TopoJSONについては下のページにまとめた。
mapshaperで簡素化
幸いmapshaper(mapshaper.org/)というツールを使えば、GeoJSONからTopoJSONへ変換できる。
簡素化もできる。
- GeoJSONファイルのImport
- 簡素化 Simplify
- ExportでTopoJSONを選択して保存
という流れ。
TopoJSONツールで、11MBのGeoJSONファイルが1.5MBのTopoJSONファイルにギュッと圧縮されたが、もっとサイズを小さくしたい……。
Simplifyで15%にすると900KB弱。
ここから10%、8%、5%、3%、……と簡素化していくと小さい島々が次々と消えていってしまう。
0%。
サイズが小さくなったが、佐渡島もないし、対馬もないし、消えすぎ。
15%-10%ぐらいまでは、あまり気にせず簡素化できる。
地形次第では、5%や3%でもたいして崩れない。