Jjug 20090421

2,021 views

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,021
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Jjug 20090421

  1. 1. 位置情報を簡単に SIProp プロジェクト GMO インターネット 新里 祐教
  2. 2. 自己紹介 <ul><li>新里 祐教(にいさと ひろたか) </li></ul><ul><ul><li>OSS SIProp </li></ul></ul><ul><ul><li>お仕事 GMOインターネット </li></ul></ul><ul><ul><li>年齢 0x20 </li></ul></ul>
  3. 3. これは何 ? 30Gbyte 程度を Hadoop で解析 緯度・経度を座標系にポイント
  4. 4. 位置情報って? <ul><li>モバイル等で場所を特定する機能を使って </li></ul><ul><ul><li>GPS 機能で位置情報をゲット </li></ul></ul><ul><ul><li>デバイスによっては基地局 /Wifi の位置情報をゲット </li></ul></ul><ul><li>位置情報を使ったサービスは楽しくなる? </li></ul><ul><ul><li>ユーザの場所を特定して、コンテンツを提供 </li></ul></ul><ul><ul><li>特定範囲内での狭いコミュニティの形成 </li></ul></ul><ul><ul><li>自分の近くに居る人を見つける </li></ul></ul><ul><ul><li>場所と個人を時系列で・・・ </li></ul></ul>
  5. 5. デバイス様々… 自作も可
  6. 6. 緯度 ・ 経度 <ul><li>緯度・経度も様々 </li></ul><ul><ul><li>日本測地系( Tokyo ) </li></ul></ul><ul><ul><li>世界測地系( WGS84 相当) </li></ul></ul><ul><li>緯度・経度は数字 </li></ul><ul><ul><li>人間が分かる文字に変換しないと分からない… orz </li></ul></ul><ul><ul><li>国立オリンピック記念青少年総合センター </li></ul></ul><ul><ul><li>東京都渋谷区代々木神園町3-1 </li></ul></ul><ul><ul><li>35.670768,139.695030 (日本測地系) </li></ul></ul><ul><ul><li>35.673657,139.692557 (世界測地系) </li></ul></ul><ul><ul><li>ジオコーディング </li></ul></ul><ul><ul><li>東京近辺では </li></ul></ul><ul><ul><li>450m 程度ずれる </li></ul></ul>
  7. 7. 緯度経度の形式 <ul><li>いわゆるモバイル 3 キャリ </li></ul><ul><ul><li>緯度・経度の取得形式が違う </li></ul></ul><ul><ul><li>+ :北緯、東経 </li></ul></ul><ul><ul><li>- :南緯、西経 </li></ul></ul><ul><ul><li>NSEW :北緯、南緯、東経、西経 </li></ul></ul><ul><ul><li>なので、これは同じ意味・・・ </li></ul></ul><ul><ul><li>+35.30.54.154 = N35.30.54.154 </li></ul></ul>// 度分秒 (DD.MM.SS.SSS) 形式の場合の処理、 Double にして戻す。(小数点6桁) String[] dimensions = dimension.split(&quot;&quot;); Double sum = new Double(&quot;0.000000&quot;); Double h = null, m = null, s = null; if (dimensions[0] != null) h = new Double(dimensions[0]); if (dimensions[1] != null) m = new Double(dimensions[1]); if (dimensions[2] != null && dimensions[3] != null) s = new Double(dimensions[2] + &quot;.&quot; + dimensions[3]); if (dimensions[2] != null && dimensions[3] == null) s = new Double(dimensions[2]); if (dimensions[2] == null && dimensions[3] == null) s = new Double(&quot;0&quot;); if (h >= 0) sum += h + m/60 + s/3600; if (h < 0) sum += h - m/60 - s/3600; return Double.parseDouble(sum.toString()); ※ 他にも測地系、 測位精度・誤差も取得 
  8. 8. 緯度・経度以外 <ul><li>POI( Point of Interest) </li></ul><ul><ul><li>コンビニ、テーマパーク、遊園地… </li></ul></ul><ul><ul><li>路線、駅… </li></ul></ul><ul><li>住所変換 </li></ul><ul><ul><li>住所から場所を特定するジオコーダー </li></ul></ul><ul><ul><li>京都の通り名:○○通り△△上がる(入る) </li></ul></ul>東京都渋谷区 代々木神園町3-1 B A 三条通り 西小路通 佐井通り A: 四条通佐井上がる B :三条通西小東入る 四条通り
  9. 9. 近いのか遠いのか? <ul><li>緯度・経度から距離を出したい!! </li></ul><ul><ul><li>簡単な 2 点間は「直線の最短距離」 </li></ul></ul><ul><ul><li>ただ、実際は…「到達可能性」が重要だったりも </li></ul></ul><ul><ul><ul><li>道案内、ナビ </li></ul></ul></ul><ul><ul><ul><li>GeoRouting ? </li></ul></ul></ul>
  10. 10. とりあえず 2 点間の距離 <ul><li>地球は楕円体 </li></ul><ul><ul><li>縦・横方向の距離の出し方が面倒 </li></ul></ul><ul><ul><li>月の引力で歪み ?? しかも地球の表面はボコボコ !? </li></ul></ul><ul><ul><li>楕円体&大圏距離で OK!! </li></ul></ul><ul><li>GeoTools を使う </li></ul><ul><ul><li>とっても使い方が簡単!! </li></ul></ul><ul><ul><li>しかも結構正確 </li></ul></ul><ul><ul><li>GeodeticCalculator calc = new GeodeticCalculator(); </li></ul></ul><ul><ul><li>calc.setStartingGeographicPoint( </li></ul></ul><ul><ul><li>Double.parseDouble(&quot;135.725612&quot;), </li></ul></ul><ul><ul><li>Double.parseDouble(&quot;34.983784&quot;)); </li></ul></ul><ul><ul><li>calc.setDestinationGeographicPoint( </li></ul></ul><ul><ul><li>Double.parseDouble(&quot;135.799770&quot;), </li></ul></ul><ul><ul><li>Double.parseDouble(&quot;34.830809&quot;)); </li></ul></ul><ul><ul><li>System.out.println(calc.getOrthodromicDistance()); </li></ul></ul>
  11. 11. ちょっと他も考えて <ul><li>地図は ? </li></ul>Yahoo Map(Java Script) Google Map そのまま 緯度・経度 を使う 測地系変換 Google Map 小数点6桁 35.67499797 139.693197 小数点12桁 35.6749979777701 139.693197365546 数センチ、ミリ単位まで必要としなければ、 6 桁表示で十分!? GPS の誤差がそもそもあるんじゃ・・・という話も 桁数は ?
  12. 12. 管理するには・・・ <ul><li>地理情報システム(GI S )が必要 </li></ul><ul><ul><li>住所の管理・検索 </li></ul></ul><ul><ul><li>緯度・軽度から範囲検索 </li></ul></ul><ul><ul><li>ジオコーダー </li></ul></ul><ul><ul><li>空間解析 </li></ul></ul><ul><ul><li>ルート検索 </li></ul></ul><ul><ul><li>セールスマン巡回問題 </li></ul></ul><ul><ul><li>図形・ポリゴンも扱いたい </li></ul></ul><ul><ul><li>PostGIS </li></ul></ul><ul><ul><li>PostLBS </li></ul></ul><ul><ul><li>とっても便利 </li></ul></ul>
  13. 13. おわりに <ul><li>緯度・経度を使う場合、測地系は WGS84 </li></ul><ul><li>緯度経度の他が必要 </li></ul><ul><ul><li>POI 、ジオコーダー </li></ul></ul><ul><ul><li>コンテンツ(ゲーム ?) </li></ul></ul><ul><li>距離計算 </li></ul><ul><ul><li>サクッと 2 点間なら GeoTools </li></ul></ul><ul><ul><li>データ管理も視野に入れる PostGIS </li></ul></ul>

×