Python geohash 紹介
-
Upload
hiroaki-kawai -
Category
Technology
-
view
1.065 -
download
2
description
Transcript of Python geohash 紹介
python-geohash紹介
Hiroaki Kawai
地球上の位置を表現するテクニック
geohash?
位置情報検索
位置情報をデータベースに格納し、検索する…データベース ?
…専用設計のものも存在するが 汎用の RDBMS を使いたい
Google AppEngine を使いたい
やってみよう
CREATE TABLE geolog ( lat DOUBLE, lon DOUBLE, tm TIMESTAMP);
SELECT * FROM geolog WHERE lat >= 40.0 AND lat < 45.0 AND lon >= 140.0 AND lon < 145.0
…手元にロガーがあって、まったりと記録していったとしよう
ある場所の付近をいつ移動したか調べてみたかったとする
Index問題
レコードを効率的に絞り込む 緯度経度を使うと、数字は二つ。効率的な index
が作れない。ひとつ制約を許す。
地球の測り方(二進数)
東経西経
北緯
南緯
0 bit = 1 領域
地球の測り方(二進数)
東経西経
北緯
南緯
1 bit = 2 領域
地球の測り方(二進数)
東経西経
北緯
南緯
2 bit = 4 領域
地球の測り方(二進数)
東経西経
北緯
南緯
3 bit = 8 領域
geohash
以上のビット列を文字列で表現するBit 列 0100101011101
5 区切り 01001 01011 10100
文字列に置き換え 9cn
python-geohash
実は、この計算は大幅に高速化できる浮動小数点の二進数1+2+4+8+16+.....
0.5 + 0.25 + 0.125 + 0.0625 + .....
メモリ上には初めから欲しいビット列がある→直接取り出してしまえ
そこで python-geohash C extension
C の簡単なインターフェースがあるので他に使ってもok
領域絞込み
二進数で絞り込んでいく = geohash prefix match
Project
http://code.google.com/p/python-geohash/
Supports Python 2.6~