geohex 20100903
DESCRIPTION
第1回GeoHex勉強会第1部のプレゼン資料です。TRANSCRIPT
@sa2da #geohex
GeoHex第1回勉強会
http://geohex.net/
Part 1)GeoHex概要紹介 Part 2)コード/デモを用いた詳細説明
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日土曜日
平面充填可能な正多角形ウィキペディアからの引用
1種類で平面を充填できる正多角形は、正三角形、正方形、正六角形の3種類のみであり、ピュタゴラスによって証明された。これらは正平面充填形 (Regular Tessellation) とも呼ばれる。
この中で、六角形のみが全ての隣接面に対して辺で接しています。
via. wikipedia
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日土曜日
誰でも無料で利用可能です。
商用利用も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日土曜日
ゲーム・コンテンツ
コミュニケーション
GISプローブ/トラッキング
統計
GeoHex
ローカル広告
Hexネットワーク型エコシステムをサポート
ルート沿線広告配信システムに採用決定
プローブパッケージシステムへの採用
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日土曜日
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
2010年9月4日土曜日