sa2da さんの GeoHex がイケている件

| | コメント(0) | トラックバック(1)

FOSS4G Tokyo の時に、DGRadar 作者の sa2da さんと会ったときにチラっと見せてもらって、その時からとても気になっていたのですが、昨日公開された GeoHex がとても良いアイデアなので、ご紹介したいと思います。

11/20追記:GeoHex Ruby gem を作成しました。
GeoHex(ジオヘックス)
日本地図ヘックス化企画GeoHex(ジオヘックス)を公開しました。
geohex.png
<GeoHexの概要>
  1. 日本中を隙間の無い六角形ポリゴン(ヘックス)で敷き詰めます。
    ヘックスに含まれる緯度経度を、ヘックスのサイズ(60段階)により4〜7桁の短いコードに変換します。
  2. 緯度経度から直接変換を行うため、ロジック単体で変換が可能です。
  3. 矩形メッシュと異なり、マス目間の距離がほぼ等しくなります。
    (緯度により南北方向の長さは多少異なりますが、実用範囲内。)
  4. 一定の精度幅を持つため、プライバシーの保護に向いています。
  5. 隣接するヘックスを6方向で表せるため、
    連続した軌跡をヘックスコード+[1-6]*nで表すことが可能です。

緯度経度などの地理情報を扱う時に、正方形などでメッシュ範囲を切って、その範囲をコード化して扱うということはよく行う方法です。あるエリア内の情報をまとめて符号化することで、情報のキャッシュや検索の高速化を測ることができます。また、緯度:35.661123 経度:139.702631 という表現のままでは冗長かつピンポイントすぎるため、メッシュ化することで、「xn76g5bm5」というように短かく表現をすることができるようになります。実際、先日の FOSS4G Tokyo のプレゼンでは、セカイカメラも「正方形でのメッシュ化+キャッシュ」という手法を使っていると発表していました。これに使えるようなコード化方法にはいくつか既存の手法があり、例えば Google は BigTable へ POI データを格納する為に GeoHash という仕様を採用しているそうです。
GeoHash: http://geohash.org/
また、国内発の仕様としても、ロケージング社が ロカポ(LocaPoint) という仕様を公開しています。
http://www.locapoint.com/jp/index.html
他にも、docomo iエリアのコードを利用していたり、市区町村コードなどを利用している所もあると思います。

さて、今回の GeoHex は、これを6角形にしたところがポイントです。どこがイケていると思う点かというと・・・

中心部からの距離にバラつきが少なくなる

引用部にも書いてありますが、6角形なので四角形に比べると範囲のバランスが良くなります。

見た目がクール

四角いメッシュよりかっこいいです。大戦略などのシミュレーションゲームを思い出させます。

移動の計算がしやすい

たとえば位置ゲーを作るとして、ある地点から別の地点まで移動するキャラクターを作りたい場合など、四角いメッシュだと斜め方向の移動が大変になりますが、6角形であれば問題になりません。

オープン仕様(予定)

Twitter で聞いてみたところ、ライセンスなどはオープンにする予定とのこと。(追記:CCライセンスで公開されました。)
sa2da_tw.png

Cool!
今のところ、日本しか対応していないようですが、符号化方式を工夫すれば全世界にも対応できるとのこと。可能ならその辺の普及も手伝いたいと思っております。

トラックバック(1)

このブログ記事を参照しているブログ一覧: sa2da さんの GeoHex がイケている件

このブログ記事に対するトラックバックURL: http://lab.cirius.co.jp/blog/cgi-bin/mt-tb.cgi/52

» GeoHex の Ruby Gem を作りました。(Cirius Lab. ブログ)~のトラックバック

先日、sa2da さんの GeoHex がイケている件 で紹介した GeoHex... 続きを読む

コメントする