geohex 20100903

49
@sa2da #geohex GeoHex 第1回勉強会 http://geohex.net/ Part 1GeoHex概要紹介 Part 2)コード/デモを用いた詳細説明 201094日土曜日

Upload: tadayasu-sasada

Post on 07-Jul-2015

2.045 views

Category:

Technology


7 download

DESCRIPTION

第1回GeoHex勉強会第1部のプレゼン資料です。

TRANSCRIPT

@sa2da #geohex

GeoHex第1回勉強会

http://geohex.net/

  Part 1)GeoHex概要紹介  Part 2)コード/デモを用いた詳細説明

2010年9月4日土曜日

Part 1)GeoHex概要紹介

2010年9月4日土曜日

GeoHexとは?

2010年9月4日土曜日

Hexとは?

2010年9月4日土曜日

物理的に安定した構造

CC BY-SA Original uploader was Merdal at tr.wikipedia

Plate XIX of "Studies among the Snow Crystals ... " by Wilson Bentley, "The Snowflake Man." From Annual Summary of the "Monthly Weather Review" for 1902.

2010年9月4日土曜日

GeoHexとは?

2010年9月4日土曜日

ヘックスのマッピング図法

2010年9月4日土曜日

座標管理のコード体系

2010年9月4日土曜日

世界中の全ての地点に対応

※GoogleMapsのカバーエリア全て2010年9月4日土曜日

GeoHexの特徴は?

VS

GeoHex非GeoHex

2010年9月4日土曜日

ヘックスの形状自体に世界観あり

↑見飽きた↑めっさかっちょエエ

→ゲームUIにベストマッチ

01

2010年9月4日土曜日

隣接するマス同士が等間隔

1 : 1.41 1 : 1

→移動量/影響度の処理が容易

02

2010年9月4日土曜日

円に近い形状と密度

隙間大 隙間小

→ヘックス単体で簡易的な範囲検索に?

03

2010年9月4日土曜日

用途に応じて選べるサイズ

Level:0 Level:24

 →GoogleMapsの縮尺比率と連動

04

2010年9月4日土曜日

ヘックス座標と短縮コード

20 byte3 - 11 byte

 →データ容量を押さえることが可能 →URLの共有に適している(Twitter / モバイル)

05

2010年9月4日土曜日

マス目間の移動量算出が容易

function getDistance(_x1,_y1, _x2,_y2){ _x2 = _x2 * Math.PI / 180.0; _y2 = _y2 * Math.PI / 180.0; _x1 = _x1 * Math.PI / 180.0; _y1 = _y1 * Math.PI / 180.0;

var dx=_x2-_x1; var dy=_y2-_y1; var A = 6378137; // 地球の赤道半径(6378137m)

var x = A * (dx) * Math.cos( _y1 ); var y = A * (dy); var old_exp = exp; dy=Math.log(Math.tan(Math.PI/4+_y2/2))-Math.log(Math.tan(Math.PI/4+_y1/2)); var rad=((dy>=0) ? 1:-1)*Math.acos(dx/Math.sqrt(dx*dx+dy*dy))*180.0/Math.PI; var tmpdist = Math.round(Math.sqrt(x*x + y*y)); totaldist = totaldist + tmpdist; distcnt();}

A.x - B.x

 →ベクトルの特性を活かす独自の座標系を設計

06

2010年9月4日土曜日

ルート演算も容易

35.661960,139.69790035.660093,139.701741

.

.

.

.

.

.

132KpxU232..

20 × (n) byte 7 + (n) byte

 →トラッキング/ルート沿い検索など

07

2010年9月4日土曜日

ex) for

vague

sa2da 3分前渋谷でご飯なう。

pinpoint

sa2da 3分前渋谷でご飯なう。

プライバシーのコントロール →位置情報の公開精度をぼかす役割

08

2010年9月4日土曜日

GeoHexの用途例

2010年9月4日土曜日

リアルマップを活かしたゲーム用途 →地形属性や標高、ランドマークを反映

kokogiko sa2da

01

2010年9月4日土曜日

円の特性を利用した周辺検索 →疑似円形ヘックスで高速検索

02

2010年9月4日土曜日

ヘックスで角範囲検索 →60度単位の範囲検索は角度演算不要

03

 →AR向けの応用も期待

2010年9月4日土曜日

降雨モニタリングなどの統計用途 →ゲリラ豪雨やヒートマップなど

04

2010年9月4日土曜日

道沿い検索/沿線検索 →パス沿いに一定幅の検索が可能

05

2010年9月4日土曜日

キロ程×GeoHex →GPS判定誤差をGeoHexで吸収

06

11/40

START GOAL5.2km約1.4km

2010年9月4日土曜日

GeoHexを利用するには?

2010年9月4日土曜日

誰でも無料で利用可能です。

商用利用もOK。

GeoHex by sa2da is licensed under a Creative Commons 表示-継承 2.1 日本 License.

Creative Commons License

クリエイティブコモンズのクレジットを表記する必要があります。

2010年9月4日土曜日

複数言語のライブラリが公開されています。

http://github.com/geohex/

calcul_omikan

hal_sk

kokogikoPerl

Ruby / GitHub

AS3

Android用GeoHexV1

2010年9月4日土曜日

・隣接判定・内包判定・範囲検索・道沿い検索・PostGISへのライブラリ対応

標準関数も順次拡張予定

...etc

2010年9月4日土曜日

ゲーム・コンテンツ

コミュニケーション

GISプローブ/トラッキング

統計

GeoHex

ローカル広告

Hexネットワーク型エコシステムをサポート

ルート沿線広告配信システムに採用決定

プローブパッケージシステムへの採用

2010年9月4日土曜日

Part 2) コード/デモを用いた詳細説明

2010年9月4日土曜日

URL: http://geohex.net2010年9月4日土曜日

[X,Y] 4592/-1633

[X,Y] 4591/-1633 [X,Y]

4592/-1634

2010年9月4日土曜日

[X,Y] 4592/-1633

[X,Y] 4591/-1633 [X,Y]

4592/-1634

2010年9月4日土曜日

[X,Y] 4592/-1633

[X,Y] 4591/-1633 [X,Y]

4592/-1634

2010年9月4日土曜日

白線:X座標/青線:Y座標

[X,Y] 4592/-1633

[X,Y] 4591/-1633 [X,Y]

4592/-1634

2010年9月4日土曜日

間隔を倍にすると1段階上位レベルに変化。

[X,Y] 2296/-817

[X,Y] 4592/-1634

2010年9月4日土曜日

半径約135m

半径約67m半径約17m

半径約1.1km半径約270m

x:168pxy:148px

2010年9月4日土曜日

299909,-107087

18744.312,-6692.9375/24 19 - 15

0.312, -0.9375 if(h_b>-h_a){ if((h_b<2*h_a)&&(h_b>0.5*h_a)){ x = h_x + 1; h = h_y + 1; } }else if(h_b<-h_a+1){ if((h_b>(2*h_a)-1)&&(h_b<(0.5*h_a)+0.5)){ x = h_x; y = h_y; } }else{ x = h_x + Math.round(h_a); Y = h_y + Math.round(h_b); }

18744 ,-6692h_x h_y

h_a h_b

レベル差の二乗倍

四捨五入

2010年9月4日土曜日

緯度経度(0,0)の地点がヘックス座標系の原点

X座標(-)←

 →X座標(+)Y座標(+)← →Y座標(-)

2010年9月4日土曜日

経度: +180 ~ -180

緯度: +85

- 85

2010年9月4日土曜日

WGS84 Google Mercator

Google Mercator投影法上のヘックス座標領域判定(最寄りの頂点を算出)

Hexオブジェクトを発行

Google Mercator

WGS84

1

23

4

4

5

6

7

8

2010年9月4日土曜日

エンコード/デコード

[LEVEL] 16[X,Y] 37489/-13386

 ヘックス座標

[ZONE] quhN0Cn ヘックスコード

u h N 0 C nX:37489

3600*20+60*49+38

abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

37489*2

+1

Y:-13386

3600*7+60*26+13

13386*2+1

2010年9月4日土曜日

↑ http://geohex.net/quhN0Cn/

http://geohex.net/{Hexコード}/

2010年9月4日土曜日

ハンズオン手順 1/3

<script src="http://geohex.net/hex_v2.js" type="text/javascript" content="text/html; charset=Shift-JIS"></script>

以下のソースをHTMLに読み込んでください。

<script src="http://geohex.net/lib/proj4js.js" content="text/html; charset=shift-jis"></script>

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

GeoHex処理全般

PROJ4のJS版ライブラリ

GoogleMapsAPI(V3からAPIキー不要)

2010年9月4日土曜日

ハンズオン手順 2/3

initProj4js();

PROJ4jsの初期化をロード時に実行してください。PROJ4の投影変換設定ファイル等を読み込む

※グローバル変数系の仕様を改善予定です。

2010年9月4日土曜日

ハンズオン手順 3/3

3種類の関数を標準実装

getZoneByLocation(lattude, longitude, level);

getZoneByCode(code);

緯度経度→Hexオブジェクト

Hexコード→Hexオブジェクト

drawHex(object ,linecolor,fillcolor,infowindow[1:on,0:off]);Hexオブジェクト→Hexを地図に描画

Hexオブジェクトパラメータ仕様-code: ヘックスコード-lat: 中心緯度-lon: 中心経度-x: ヘックス座標値(X座標)-y: ヘックス座標値(Y座標)

2010年9月4日土曜日

@sa2da #geohex

GeoHex・サービス/コンテンツ事業者・ソリューション事業者・広告配信事業者・統計/予測系研究者・GeoHexプロジェクトメンバー

多方面の参加者を募集しています。

...etc

[email protected]

2010年9月4日土曜日