世界の測量

Sibling of "Relevant, Timely, and Accurate, " but much lighter and shorter ※自らの所属する組織の見解を示すものでない

MapReduce的ベクトルタイル作成のマルチスケール処理方法

map.rb、sort、reduce.rb を使った「MapReduce的ベクトルタイル作成」ですが、次のようにすると、少なくともポイントデータについては問題なく、マルチスケールのベクトルタイルを高速に作成できそうですね。

  1. 作成する最大のズームレベルにおいて、z/x/y に各レコードを map
  2. sort してからタイルファイル(z/x/y)に reduce。これで MapReduce 的処理は終わり。
  3. 更に、ズームレベル z のデータからズームレベル z - 1 のデータを作成。具体的には、z/x/yのデータを、{z-1}/{(x / 2).floor}/{(y / 2).floor} に縮約。
  4. 必要なだけ z をデクリメントして上記と同じ処理。
  5. 縮約タイルを作成する際に、レコード数を記録しただけのタイルを作っておけば、概要タイルも簡単に作成できる。又は、レコード数タイルは飛ばしていきなり概要タイルを作ってもよい。