GeoHex V3公開しました。

GeoHex(ジオヘックス)V3を公開しました。

V3のデコードロジックに一部不具合が報告され、改修に時間がかかっております。
そのため、改修完了までV3の公開を一旦中止します。
各移植版ライブラリのご利用もお控えください。

V3デコードロジックの不具合改修を完了しました。
デモサイトも再公開しています。

コード体系を見直し、前方一致も可能な仕様を再定義しました。
<新コード体系>
Hexコードの各1文字にXY両軸の情報を内包しており、
Hexサイズ(Level)が1段階小さくなる度にHexコードが1文字増加します。
geohexv3_03

<新Hexマッピング体系>
Level間の分割比率を4分割(2*2)から9分割(3*3)に変更しました。
V3では、中心のHexを取り囲む6つのHexが上位Hexに内包されます。
geohexv3_02

以下、V3エンコードロジックの解説です。

  1. 緯度経度をHex座標系に変換(旧仕様と共通)
  2. Hex座標のX軸Y軸それぞれ3等分し、各領域を[0,1,2]と定義geohexv3_04
  3. X[0,1,2]+Y[0,1,2]の1セットを3進数→10進数(9進数)変換geohexv3_05
  4. 該当するLevelまで領域判定を繰り返し、コードを連結geohexv3_06
  5. コード先頭3文字を30進数変換し2文字に圧縮、Level0に定義geohexv3_08

コード体系と座標系が3進数に基づいているため、空間インデックスとして組み合わせる隣接Hexや上位Hexの算出を3進数演算で容易に求めることができます。

指定Hexから*ステップ以内のHex一覧を取得する、といったケースにおいても上位Hexの組み合わせによる前処理を行うことで検索コストを下げることも可能になると考えられます。

HexLevelの範囲が2Levelに限定される場合は、4箇所のHexで上位Hexを補間することも可能です。
geohexv3_07
今回のコード体系の変更に伴いエンコード/デコードロジックに修正が入りますが、基本的な内部処理構造に変更はありません。

エンコード・デコード以外の拡張関数についても順次対応予定です。

▼@niyalistさんTogetterまとめ
http://togetter.com/li/81426

GeoHexの仕様ならびに関連するプログラム、サービスは以下の条件を満たすものに限り、クリエイティブ・コモンズのライセンス形式に則り、ライセンスバッジ画像およびライセンス文言・URL等のクレジットを再配布するソースコード・公開するサイト内・アプリのクレジット欄等に掲載していただくことにより自由に「改変」「再配布」「商用利用」が可能です。

・インターネット上のオープンなWebサービスである
・GoogleMaps等の地図上で動作しGeoHexによるビジュアル表現を行う
・地図もしくは同一画面上にクレジットバッジを表示する(要リンク)

クローズド用途のサービスや、バックエンド処理のみに利用される場合は別途ライセンスを発行いたしますのでお問い合わせください(→こちら)。

ソースコード内には↓をお願いします。

GeoHex by @sa2da (http://geogames.net) is licensed under Creative Commons BY-SA 2.1 Japan License.

※クリエイティブ・コモンズ(CC BY-SA)ライセンスは、
原著作者名とリンク、クリエイティブコモンズサイトへリンクが必要です。
また、同一ライセンスによる公開/二次配布のみ可能です。
(ソースコードを含む二次制作物は全てCC BY-SAライセンスが継承されます。)
別ライセンスによる上書きは許諾されませんのでご注意ください。

ただし、原著作者および原著作者から別途ライセンスを取得している場合はその適用対象範囲外とします。

<操作方法>

地図上のクリックすると、クリックした座標を含むヘックスが描画されます。
画面右上の[+][−]でヘックスレベル(サイズ)を変更可能です。

<表示項目>
[ZONE] ヘックスコード。
[LEVEL] 0〜15。数字が大きいほど、ヘックスサイズが小さくなります。
[X,Y] 各レベルにおける斜形座標系の座標値

※GeoHexのライセンスおよび規約は予告なく変更する可能性があります。
GeoHexを利用している全てのプログラムやそのライブラリを利用しているサービスは、
いずれもGeoHex.netの最新の規約に準拠していただくようお願いします。

  1. コメントはまだありません。

  1. トラックバックはまだありません。