Python geohash 紹介

1,337 views

Published on

python-geohash 解説。神戸ITフェスティバル2011 #kobe_it_fes LT にて発表。
http://kobe-it-fes.org/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Python geohash 紹介

  1. 1. python-geohash紹介 Hiroaki Kawai
  2. 2. 地球上の位置を表現するテクニック geohash?
  3. 3. 位置情報検索 <ul><li>位置情報をデータベースに格納し、検索する
  4. 4. データベース…? </li><ul><li>専用設計のものも存在するが…
  5. 5. 汎用の RDBMS を使いたい
  6. 6. Google AppEngine を使いたい </li></ul></ul>
  7. 7. やってみよう 手元にロガーがあって、まったりと記録していったとしよう… ある場所の付近をいつ移動したか調べてみたかったとする
  8. 8. Index問題 <ul><li>レコードを効率的に絞り込む
  9. 9. 緯度経度を使うと、数字は二つ。効率的な index が作れない。
  10. 10. ひとつ制約を許す。 </li></ul>
  11. 11. 地球の測り方(二進数) 東経 西経 北緯 南緯 <ul><li>0 bit = 1 領域 </li></ul>
  12. 12. 地球の測り方(二進数) 東経 西経 北緯 南緯 <ul><li>1 bit = 2 領域 </li></ul>
  13. 13. 地球の測り方(二進数) 東経 西経 北緯 南緯 <ul><li>2 bit = 4 領域 </li></ul>
  14. 14. 地球の測り方(二進数) 東経 西経 北緯 南緯 <ul><li>3 bit = 8 領域 </li></ul>
  15. 15. geohash <ul><li>以上のビット列を文字列で表現する </li><ul><li>Bit列 0100101011101
  16. 16. 5区切り 01001 01011 10100
  17. 17. 文字列に置き換え 9cn </li></ul></ul>
  18. 18. python-geohash <ul><li>実は、この計算は大幅に高速化できる </li><ul><li>浮動小数点の二進数
  19. 19. 1+2+4+8+16+.....
  20. 20. 0.5 + 0.25 + 0.125 + 0.0625 + .....
  21. 21. メモリ上には初めから欲しいビット列がある
  22. 22. ->直接取り出してしまえ
  23. 23. そこで python-geohash C extension </li><ul><li>C の簡単なインターフェースがあるので他に使ってもok </li></ul></ul></ul>
  24. 24. 領域絞込み <ul><li>二進数で絞り込んでいく = geohash prefix match </li></ul>
  25. 25. Project <ul><li>http://code.google.com/p/python-geohash/
  26. 26. Supports Python 2.6~ </li></ul>

×