GeoHex V3 公開!

@sa2da さんを中心としたGeoHexのversion 3公開です. http://geohex.net/v3.html GeoHexV3仕様(簡易版)は以下で. http://geogames.net/geohex/v3
4
sa2da @sa2da

ひろっていただき恐縮。ついでに告知。さっき前方一致可能なGeoHex V3できました。 RT @Say_no: 元祖ジオメン!!sa2daさん!! RT @sa2da: アツい RT @kakuit: はてなココ、ロケタッチ、Mixiチェックイン、st@mp #gms2010

2010-12-17 20:18:02
sa2da @sa2da

出来たてホヤホヤ。 RT @kakuit: おおお! #gms2010 #geohex RT: @sa2da: 「さっき前方一致可能なGeoHex V3できました」

2010-12-17 20:23:15
sa2da @sa2da

v1-2の3倍くらいエネルギー使いました… RT @Say_no: ついに!!ここ何日もの悪戦苦闘が成就されたんですね!!お疲れ様です!! RT @sa2da: ひろっていただき恐縮。ついでに告知。さっき前方一致可能なGeoHex V3できま… #geohex

2010-12-17 20:26:26
sa2da @sa2da

検証不十分なので触ってみて下さい。そして僕は今から打ち合わせへ…http://geohex.net/v3.html RT @chshii: おっ!すばらしー。RT @sa2da: 出来たてホヤホヤ。 RT @kakuit: おおお! #gms2010 #geohex V3

2010-12-17 20:29:39
sa2da @sa2da

#geohex v3 一部不具合みつけたのでソースいじるのはしばしお待ちください。

2010-12-18 12:54:31
sa2da @sa2da

V3の変更点: Hexの分割比率を2の累乗から3の累乗にしました。角を除く7つのHexが上位Hexに内包されます。そのため、HexサイズはV2と異なります。 #geohex

2010-12-18 13:03:26
sa2da @sa2da

V3の変更点2: コード長=レベル(-1)になり、1文字削ると、その上位Hexを示します。より上位のHexが優先される体型です。 #geohex

2010-12-18 13:13:20
あんちもん2 @antimon2

ああそうか、レベル0のヘックスサイズをv2と比べて充分小さくすることでコード長を抑えているのかーなるほど #geohex RT @sa2da: V3の変更点2: コード長=レベル(-1)になり、1文字削ると、その上位Hexを示します。より上位のHexが優先される体型です。

2010-12-18 13:39:37
sa2da @sa2da

1文字だけですが。 RT @antimon2: ああそうか、レベル0のヘックスサイズをv2と比べて充分小さくすることでコード長を抑えているのかーなるほど #geohex RT @sa2da: V3の変更点2: コード長=レベル(-1)になり、1文字削ると、その上位Hexを示します

2010-12-18 13:40:57
あんちもん2 @antimon2

いえ、そういうことではなく、「1文字削るとレベル-1」てコード体系だと領域サイズとコードサイズのバランスがーと思ってたので。 RT @sa2da: 1文字だけですが。 RT @antimon2: ああそうか、レベル0のヘックスサイズを《以下略》 #geohex

2010-12-18 13:44:24
sa2da @sa2da

コード長の圧縮は、2から3の累乗分割に変更し分割回数を減らした事の方が大きいです。 RT @antimon2: いえ、そういうことではなく、「1文字削るとレベル-1」てコード体系だと領域サイズとコードサイズのバランスがーと思ってたので。 RT @sa2da: 1文字だけですが。…

2010-12-18 14:01:02
あんちもん2 @antimon2

全体の圧縮率はそうですけど、じゃ、v3のレベル-2相当がv2のレベル0と同じヘックスサイズですよね?なぜそこをレベル0に引き下げなかったのかな、と素朴な疑問。 RT @sa2da: コード長の圧縮は、2から3の累乗分割に変更し分割回数を減らした事の方が大きいです。 #geohex

2010-12-18 14:45:10
あんちもん2 @antimon2

@sa2da あ、ゴメンナサイ、理解しました。レベルを2段階引き下げてもコード長は「1文字だけ」しか増えないんですね。だから「1文字だけ」なんですね。 #geohex

2010-12-18 14:48:21
sa2da @sa2da

もちろん、実質のレベル2相当をレベル0にしたのはコード圧縮のためですが、レベル0に2文字使ってるので1文字しか短くなってないんですよ。あとは全て数字だと余計に長く見えるという見た目上の理由。 RT @antimon2:…なぜそこをレベル0に引き下げなかったのかな… #geohex

2010-12-18 15:07:31
sa2da @sa2da

もう1点、異なるレベル間でのコード圧縮の際の判別(例えばレベル0のコード1とレベル1の01と2の001)をシンプルにするために、レベル2スタートで統一しました⇦こっちがご質問に対する答えですね。 RT @antimon2: …なぜそこをレベル0に引き下げなか… #geohex

2010-12-18 15:20:07
OHTSUKA Ko-hei @kokogiko

GeoHex V3凄いわ。正直、最初見た時は「下位へクスが上位へクスに全て内包されてない?何それ」と思ったが、よくよく前方一致が必要なユースケースを考えてみると、下位へクスが上位へクスに全て内包されているべき必然性はなかった。 #geohex

2010-12-20 09:41:22
OHTSUKA Ko-hei @kokogiko

なんとなれば、前方一致が必要な位置検索での荒々の篩いかけでは、単独へクスでの検索とかはあり得なくて、周辺へクスとまとめての検索が必要になる。そうなると、上位へクスに内包されない下位へクスも必ず周辺へクスには内包されるので、検索漏れは発生しない。 #geohex

2010-12-20 09:46:16
OHTSUKA Ko-hei @kokogiko

元々が粗々検索なので、厳密な下位へクスの上位への内包等は求められない。そして、GeoHashでは粗々検索に周辺9メッシュの前方一致検索が必要だが、GeoHexだと7ヘックスでよい。僅かな差だがその点で対GeoHash優位に立てる。 #geohex

2010-12-20 09:51:17
OHTSUKA Ko-hei @kokogiko

問題はGMaps等での表示矩形に適合する粗々検索用7へクスのレベルとコードを求める計算が簡単かどうかだけど、それも難しくても求まる事は間違いないので、API化すれば問題ない。そうなると、粗々検索用途ですらGeoHashに劣っているところは皆無になる。 #geohex

2010-12-20 09:58:50
OHTSUKA Ko-hei @kokogiko

前方一致が可能になった事で、マーカーのクラスタ用途等にも使おうという人も居たけど、その点でもクラスタなんてある原理でまとめられればいいのだから厳密性等必要ない。むしろ、クラスタ単位が矩形で縦に伸びたり横に伸びたりするGeoHashよりは遥かによい。 #geohex

2010-12-20 10:03:38
OHTSUKA Ko-hei @kokogiko

正直、「前方一致狙うなら下位へクスは上位へクスに完全内包されなきゃダメ」ドグマに陥っていたので、それが不可能なへクスでは前方一致は検討するだけムダ、ストレージ用途はGeoHashとの使い分けでいいやんと思ってたが、甘かった。諦めなかった @sa2da の勝利。 #geohex

2010-12-20 10:11:55
sa2da @sa2da

.@kokogikoさんのコメントうれしーなぁ。万能ではありませんが、僕の出した一つの答えです。 RT 正直、…前方一致は検討するだけムダ、ストレージ用途はGeoHashとの使い分けでいいやんと思ってたが、甘かった。諦めなかった @sa2da の勝利。 #geohex

2010-12-20 13:37:21
sa2da @sa2da

デコードロジックに一部不具合残っていたりしますが、諸々完成度上げていきます。 #geohex

2010-12-20 13:40:35
sa2da @sa2da

デコードの不具合箇所直り次第用意しますので少々お待ちください。 #geohex RT @kabayan: @sa2da 仕様はどこかにあがっていますか?

2010-12-20 13:56:56
sa2da @sa2da

改めて、#geohex V3完成版できましたー。http://geohex.net/v3.html?code=XM488542830280 から1文字ずつ削ってみたりしてください。

2010-12-21 23:27:27