1000以上のルートを、ユーザごとの地図に投影する方法(7) - まとめ&ソースコード


前回までで、個々の技術説明は終わりました。
まとめとしてスクリプトを晒してみます。

マップ作成の考え方


記録1、記録2、記録3の3つの記録がある場合を
サンプルに考えます。



ユーザ1、ユーザ2の2名がいて、それぞれ

  • ユーザ1が記録1、記録2
  • ユーザ2が記録2、記録3

を登録したとき


  • ユーザ1が記録1、記録2
  • ユーザ2が記録2、記録3
  • システム全体で記録1、記録2、記録3

の3つの地図ページを用意します。


必要なプログラムは2つ。それぞれサンプルコードを作成しました。

サンプルコード


サンプルコード一式


> perl mkmap.pl
> perl compositemap.pl
とすると、地図画像が生成されます。


生成した地図サンプル

ユーザ1の地図



ユーザ2の地図



全体地図

処理時間について


ヤマレコの場合、約2,000ユーザ、6,000個のルートがあり、
4日間CPUを使い続けてやっと画像一式ができあがりました。
ヤマレコで作った全ルート表示地図


今回のような2段階の生成にしておくことで、全マップ作成は1回だけやれば良いです。
普段は以下の更新だけをすればOK。

  • 前回スクリプト実行時から更新された記録だけ、記録単位のタイル画像を作成
  • データが更新されたユーザの地図だけ、ユーザ単位のタイル画像を再合成


CPU負荷がかかるタイル画像の生成処理を記録ごとに1回づつやれば良くなったので、
やっと現実解になりました。