Code for History

"Code for History"はIT技術を歴史学上の問題の解決に使うコミュニティです。強調したいのは、我々にとってIT技術は「手段」であって「目的」ではありません。「目的」は歴史学上の問題を解決する事であって、必要であればITでない手段も活用します。常に最優先なのは、問題を解決することです。

Google Mapsが発明した、球面メルカトルタイル地図

社内で日誌を付けていて、最近まで味気ない業務報告だけしてたのですが、割といろんな話題投げる人が多いので、私も地図/位置情報の話題毎日投げるようにしました。

その中からいくつか、外に出せる話題はブログでも転載しようかと思います。
業務終了の10分程度の間に仕上げるので、あまり追調査もせず用語の説明も省いたり*1、記憶違いや事実誤認*2もあるかもしれませんが、その辺は補足や突っ込みいただければ幸いです。

================================

2005年に登場したGoogle Maps、やはり注目はAjaxスクロール地図でしたが、実は世界で初めてAjaxスクロール地図を実現したのはGoogleでなく日本のマピオンです。
標準地図ではなくマピオンラボというクローズサイト内のみでしたが、Googleより1年以上早くAjaxスクロール地図を実現していました。

Google Mapsがすごいのは、Ajaxスクロール地図そのものよりも、スクロール地図の標準的な仕様に近いものを生み出した事です。
地球をメルカトル図法という地図図法で地図化した際、ほとんど人も住んでいなければ国もない、南北緯86度程度以上を無視すれば、地図がちょうど正方形になることを発見したのです。
そこで、その正方形の世界地図を256px×256pxの1枚の画像で表し、そこから1段階ズームする毎に画像を縦2倍横2倍の4分割していき、それを繰り返して世界中のスクロール地図用タイル画像を定義することに成功したのです。

言葉で説明すると難しいですが、イメージであらわすとこんな感じです。
http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

Googleによる仕様説明:
https://developers.google.com/maps/documentation/javascript/v2/overlays?hl=ja#Google_Maps_Coordinates

この仕様は優れていたので、MicrosoftやYahooのようなライバルも採用し、オープンソース地図の業界でも仕様として取り入れられました。
Bing Mapsの仕様:
http://msdn.microsoft.com/en-us/library/bb259689.aspx
オープンソースGIS業界での仕様(Tile Map Server):
http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification

また4分木で細かくなっていくコード体系は、空間を検索する前方一致可能なインデックス体系としても優れているので、GeoHash的な空間検索キーとして用いられる事もよくあります。
※:空間検索キーとしての利用レポートはこちらの記事に。>http://d.hatena.ne.jp/kochizufan/20121006/1349483795


このように使い勝手のいい共通の仕様が出来たことで、誰でも仕様に合わせて地図タイルを作れば簡単に重ね合わせられるようになり、例えば
http://www.geo.lt.ritsumei.ac.jp/meisaizu/googlemaps.html
こんな地図も簡単に作れるようになりました。

派手な技術と違ってあまり目立たないですが、この仕様の発明も、Google Mapsの大きな功績だと思っています。

*1:例えば本記事ではメルカトルと球面メルカトルの違いの説明を省いたりとか

*2:たとえばメルカトル図法の極域を省くと正方形になる!これはいい!と発明したのが本当にGoogleだったか、は追調査してない

© Code for History