GeoHex(ジオヘックス)

日本地図ヘックス化企画GeoHex(ジオヘックス)を公開しました。
→最新仕様はコチラ

<GeoHexの概要>

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

地図を使った壮大なシミュレーションゲームやテーブルトークゲームなどへの活用、連続した軌跡の統計による移動予測シミュレーションなどを想定しています。

また、短いコード体系を活かし、Twitterなどでの位置情報の共有にも向いています。

<操作方法>

地図上のクリックすると、クリックした座標を含むヘックスが描画されます。

<URLパラメータ仕様>
code: ヘックスコードを直接指定可能です。
level: 1〜60まで指定可能です。数字が大きいほど、ヘックスサイズが大きくなります。指定したlevelによって、ヘックスコードが変動します。
trace=on
mode: ヘックスの描画方法を指定可能です。
mode=0(指定なし): クリックでヘックスを追加します。
mode=1: マウスムーブでヘックスを追加します(フキダシなし)。
mode=2: iPhoneやFirefoxで現在地にヘックスを追加します(自動連続更新)。
例)mode=1
http://geogames.net/hex/?mode=1

[2009.11.7] 詳細仕様・モジュールを追記しました。
[2009.11.11] ライセンス形式を追記しました。
[2009.11.12] ヘックス間距離計算仕様を追記しました。
[2009.11.24] CCライセンス形式を更新しました。

<GeoHexコード体系>
GeoHexコード体系

A: ヘックスレベルを表します。
level指定が無い場合は省略されます。

  • B〜D: 座標を表します。
    ヘックスレベルによって桁数が異なります。
    1〜6)A+B+C+Dの7桁
    7 )C+Dの4桁 [デフォルト]
    8〜60)A+C+Dの5桁

※ヘックスレベル=ヘックスの大きさ

<GeoHex座標系>
GeoHex座標系
GeoHexは緯度経度を斜形座標系に置き換えることで、座標管理の効率化をはかっています。同じ斜線上のヘックス同士をGeoHex座標系では同一座標として扱います。
青線をGeoX座標、赤線をGeoY座標とし、それぞれの交点をヘックスの中心点とします。六角形の各頂点座標を管理する必要がないことに加えて、隣接するヘックス同士をGeoHex座標系ではプラスマイナス(1)の差分で表すことが可能です。
また、離れたヘックス同士の距離(マスの数)は、座標差の加減算で算出することが可能です。

hex_logic03a,b,c: 単位ベクトル、座標差: (m,n)とすると、mとnが同符号の場合のみc=a+bが成立します。
m>nの場合、
a*n+b*mは、a*(m-n)+c*nと表せることから、最短距離は(m-n)+n = m
すなわち、座標差の大きい方の値が最短距離となります。
左図の場合、赤から紫までの座標差が(3,1)→距離3となります。

最南西端: 与那国島、最南東端:南硫黄島をそれぞれの座標原点とし、それ以北の日本全体がカバーエリアです。

<GeoHexモジュール>
以下のソースを追記することで、ヘックスメソッドを利用可能になります。
※GoogleMapsのAPIがロードされていることが前提です(世界測地系・10進法)。

<script src=”http://geogames.net/hex/hex_v1.js” type=”text/javascript”></script>

getZoneByLocation( lat, lon, level )
 緯度経度からzoneオブジェクトを取得します。

  • lat: 緯度
  • lon: 経度
  • level: ヘックスレベル
getZoneByCode( code )
 ヘックスコードからzoneオブジェクトを取得します。

  • code: ヘックスコード
drawHex( zone, linecolor, fillcolor, popinfo )
 zoneオブジェクトを渡すことで、ヘックスを描画します。

  • zone: ゾーンオブジェクト
  • linecolor: ヘックスの線色
  • fillcolor: ヘックスの塗り色
  • popinfo: 吹き出し表示の有無
zoneオブジェクトパラメータ

  • code: ヘックスコード
  • lat: 中心緯度
  • lon: 中心経度

var zone = getZoneByLocation( lat, lon, level );
var code1 = zone.code;
このような形で値を取れます。
drawHexメソッドにはzoneオブジェクトごと渡します。

なぉ、GeoHexのコード体系については今後変更する場合があります。

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

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

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

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

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

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

  • トラックバック 停止中
  • コメント (9)
  1. 始めまして、かるかると申します。
    「シリウスラボ」さん経由で、GeoHexの事を知りました。

    http://sites.google.com/site/gpsandbike/work/flexgeohex
    にFlex版(Adobe Flash)のGeoHexを作ってみました。
    ソースは後日公開です。

    • sa2da
    • 2009年 11月 12日

    @かるかる
    ども、sa2daです。
    Flex版で活用幅がだいぶ広がりますね。
    大戦略是非ー
    いま、シリウスラボさん、kokogikoさんとGeoHexのリポジトリ管理について検討中です。
    おそらくgithubになると思いますので、そちらにも是非ご参加ください。

    • むらくも
    • 2009年 11月 24日

    はじめまして。ここギコさん経由でGeo-Hexに興味を惹かれましてこちらを拝見させていただきました。

    ライセンスについて確認といいますか気になった点がありましたので質問させていただきます。

    GeoHex by sa2da is licensed under a Creative Commons 表示 2.1 日本 License.
    Permissions beyond the scope of this license may be available at http://geogames.net.

    が繰り返すような表記になっておりますが、全て(4行分)必要な表記になりますでしょうか。

    また、CC-BYライセンスは原作者の明記(具体的には上記ライセンスの「Creative Commons 表示 2.1 日本 License」のリンク先のAttribute this work:の内容と同等のもの)が条件であって、CCライセンスの転載を条件にする場合は、ライセンスをCC-BY-SA(表示・継承)とする必要があると思います。Geo-Hexのライセンスは継承となりますでしょうか。

    私の方でGeo-Hexをすぐに利用させていただくというわけではないのですが、ご確認いただけたらと思いましてコメントさせていただきました。

    • sa2da
    • 2009年 11月 24日

    @むらくも さん、コメントありがとうございます。
    GeoHexに関するCCライセンスは、基本的に「表示・継承」となります。CCの制約がプロダクト化の障壁となる場合は、ご相談ください。
    ライセンス文ですが、クリエイティブ・コモンズ・ジャパンのサイトにてフォーム選択結果のタグをそのまま貼っています。それにより、継承項目が抜けています。また、表示も1行あれば(もしくはCCマークがあれば)良いように思いますので、原文を再度確認してみます。

    • むらくも
    • 2009年 11月 24日

    ご確認いただきましてありがとうございます!
    GeoHexのライセンスはCC表示・継承という点、了解いたしました。お手数おかけいたしました。

    ライセンス表記は http://creativecommons.org/choose/?lang=ja 経由で作成の場合は2つ目の質問に Yes, as long as others share alike を選択すれば「継承」が付いたものになると思います。(*(i)マークをクリックすると表示される注釈の方は翻訳されてました)

    • sa2da
    • 2009年 11月 25日

    @むらくも さん、ご助言ありがとうございます!
    日本語意外の選択肢を完全に読み飛ばしておりました。
    早速ライセンス部分を更新いたしました(継承マークが追加され、1行になりました)。

  2. お世話になります。私、MASAと申します。
    この度はsa2da様が開発されたGEOHEXのライセンスについてご質問があり、ご連絡を差し上げました。

    現在、弊社にてGEOHEXを用いたスマートフォン向けアプリを企画・開発しております。

    GEOHEXの仕様ならびに関連するプログラム、サービスはクリエイティブ・コモンズのライセンス形式にのっとっていますが、アルゴリズムを参考にしてandroid版はjavaで作成し、iphone版はobjective-cで作成しています。

    これはソース変更に当たるのでしょうか?(もし、そうだとしたら規約よりご相談が必要だと記載してありましたので・・・)

    該当部分のソースが必要でしたら提出可能です。

    ご多忙と存じますが、直接メールアドレスにご返答いただければ幸いでございます。

    以上、よろしくお願い致します。

    MASA

    • sa2da
    • 2011年 2月 16日

    MASAさん、はじめまして。
    メール送りました。

  3. sa2da 様

    お世話になります。MASAです。
    迅速なご返答誠にありがとうございます!
    アプリがリリースされましたら、ご連絡致しますね!

    今後ともよろしくお願い致します。

    MASA

コメント 停止中