MapReduce的ベクトルタイル作成のマルチスケール処理方法
map.rb、sort、reduce.rb を使った「MapReduce的ベクトルタイル作成」ですが、次のようにすると、少なくともポイントデータについては問題なく、マルチスケールのベクトルタイルを高速に作成できそうですね。
- 作成する最大のズームレベルにおいて、z/x/y に各レコードを map
- sort してからタイルファイル(z/x/y)に reduce。これで MapReduce 的処理は終わり。
- 更に、ズームレベル z のデータからズームレベル z - 1 のデータを作成。具体的には、z/x/yのデータを、{z-1}/{(x / 2).floor}/{(y / 2).floor} に縮約。
- 必要なだけ z をデクリメントして上記と同じ処理。
- 縮約タイルを作成する際に、レコード数を記録しただけのタイルを作っておけば、概要タイルも簡単に作成できる。又は、レコード数タイルは飛ばしていきなり概要タイルを作ってもよい。