国連ベクトルタイルツールキットの一つとして、国土地理院の基盤地図情報をベクトルタイルに変換するものを作っています。
長野県全域を含む基盤地図情報を、Raspberry Pi 4B 一台でベクトルタイルに変換したところ、かかった時間は次の通りでした。
real 149m18.849s
user 355m17.867s
sys 77m39.435s
上記の計測値を得るために実行したコマンドは time rake produce
です。
今回の実装のために新しく加えた工夫は、データソースから地物を取り出してフィルターをかけて Tippecanoe に流し込めるようにするパートを、GNU parallel を使って、平行化したことです。要所は、次の通りです。
cmd = "parallel --line-buffer 'ogr2ogr -lco RS=YES -f GeoJSONSeq /vsistdout/ {1} | FGD_LAYER={2} node filter.js' :::: w1.txt ::::+ w2.txt"
この平行化の結果、実時間149分に対して、ユーザー時間355分、システム時間78分を使っているという計測になりました。(355+78)/149=2.9ですから、変換処理だけで3コア程度フルに利用できたような感じになっています。割と効率よくCPUを使い切れていると私は思います。
なお、Raspberry Pi 4B は CPU 負荷が上がって機械の温度が上がると、自動的にクロック周波数を調整して温度が下がるのを待ってくれます。今回の信濃一国変換テストでも、ハングアップすることなく安定して動いてくれました。
また、Tippecanoe によると、信濃一国基盤地図情報ベクトルタイルの分量の諸元は、次の通りでした。
9922053 features, 798006848 bytes of geometry, 18220 bytes of separate metadata, 319908150 bytes of s
tring pool
もう少しで一千万地物、というデータ規模ですね。