ひよっこ。

I want to…

GeohashのAS3版

Posted by hikaruworld : 2010 2月 10

を適当に作ってみました。

Geohashとは何かに関しては、Wikipedia(英語)のGeohashが参考になるかと思います。
簡単にいうと緯度経度情報の矩形情報を特定の文字列を使って表現することができる仕様です。

アルゴリズムの日本語の解説としては

の記事がわかりやすいと思います。

自分の文系脳みそでも理解できました。ありがとうございます。

一応簡単にテストは済ませてありますが、勢いで作ったのであんまり自身なし。
浮動小数演算そのままやっているので丸め誤差が出ると思います。
launchpad.netのここからダウンロードできます。

bit演算とかした方が良いのかもしれませんが、恥ずかしながら普通にやってしまいました。
勉強し直してから修正します。

以下の機能が実装してあります。

  • エンコード機能(緯度/経度情報をgeohashに変換する)
  • デコード情報(geohash情報を緯度/経度に変換する)

以下はTODO

  • キャッシュの実装
  • 矩形の上下左右9方向への移動
  • 拡大/縮小機能
  • 隣り合うgeohashの取得方法
  • googleのジオコーディング連携

使いかたはGeoSampleを見ても分かりますが、以下の通りです。

// インスタンス化
var geo:Geohash = new Geohash();

// 富山城址公園の緯度経度をgeohashにエンコード
var hash:String = geo.encode(36.693286, 137.210877);
trace(hash);

// 富山城址公園のgeohashを緯度経度にデコード
var latlng:Object = geo.decode("xn98drccvhm2");
// Objecetの"lat"と、"lng"でそれぞれの情報を取得可能
trace(latlng[Geohash.LAT_KEY], latlng[Geohash.LNG_KEY]);

バグがあれば指摘していただけると助かります。

以上です。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。