タイル地図で、ソースデータがウェブ地図タイルと異なる矩形単位で管理されている場合どういうふうにウェブサーバでリリースしていくことが楽になるか。
目指すべき理想の世界では、ソースデータもウェブ地図タイルと同じ矩形単位で生きていくべくであるが、それは当面無理である。とはいえ安易な解としてデータベースに飛びついてしまえば、パフォーマンス上・セキュリティ上の大きな軛になる。この状況では、決してデータベースに飛びついてはならない。
この場合の手法をメモしておく。ソースタイリングと仮称する。
レイヤーコンポジションと同じ手法を用いる。URLインタフェース的には Mapzen Vector Tile Services の {layers} 指定で表現されるような方法だ。リクエストの際に複数のレイヤを指定する。レスポンスでは両方のレイヤが接続(cat)されて返ってくる。
このエントリでは余談になるが、GeoJSONベクトルタイルデータの場合タイルの cat は簡単で、冒頭の {"type": "FeatureCollection", "features: [ と、末尾の ]} を外して UNIX cat し、cat した後に全体の前後に、さきほど外したものをつければよい。
本題に戻ると、ソースデータの矩形単位でXYZタイルセットを作る。ウェブ地図でタイルがcallされたときに、そのタイル番号のタイルについて、すべてのソースデータごとのツリーにあるタイルを cat すればよい。
ソースデータの単位の個数が多い場合には、どのタイル番号にはどのソースデータがかかるかを示すタイルセットを中間的に持てば、空打ちを削減できる。これは、ココタイルの発想である。
以上、記載所要時間は7分であった。