隨著移動終端的普及,很多應用都基於lbs功能,附近的某某(餐館、銀行、妹紙等等)。
基礎資料中,一般儲存了目標位置的經緯度;利用使用者提供的經緯度,進行對比,從而獲得是否在附近。這裡需要在設定出乙個字段,是關於編碼的字段,一會看下文哈……
地理位置距離實現目標:
查詢附近多少公里內的人或者商家
geohash有以下幾個特點:
第一:geohash用乙個字串表示經度和緯度兩個座標。
(這裡插一句:我們的mysql為字段建立的索引,其實原理就是利用二分法演算法來做路徑查詢簡化,快速查詢出想要的字段位置)
第二:geohash表示的並不是乙個點,而是乙個矩形區域。比如編碼wx4g0ec19,它表示的是乙個矩形區域。
第三:編碼的字首可以表示更大的區域。
例如wx4g0ec1,它的字首wx4g0e表示包含編碼wx4g0ec1在內的更大範圍。 這個特性可以用於附近地點搜尋。首先根據使用者當前座標計算geohash(例如wx4g0ec1)然後取其字首進行查詢 (select * from place where geohash like 'wx4g0e%'),即可查詢附近的所有地點。
geohash比直接用經緯度的高效很多。
geohash的原理
geohash的最簡單的解釋就是:將乙個經緯度資訊,轉換成乙個可以排序,可以比較的字串編碼
geohash能做到:
require_once('geohash.class.php');$geohash = new geohash;//得到這點的hash值$hash = $geohash->encode(39.98123848, 116.30683690);//取字首,字首約長範圍越小$prefix = substr($hash, 0, 6);//取出相鄰八個區域$neighbors = $geohash->neighbors($prefix);array_push($neighbors, $prefix);print_r($neighbors);1
2
3
4
5
6
7
8
9
10
11
12
13
14
//得到9個geohash值
array
(
[top] => wx4eqx
[bottom] => wx4eqt
[right] => wx4eqy
[left] => wx4eqq
[topleft] => wx4eqr
[topright] => wx4eqz
[bottomright] => wx4eqv
[bottomleft] => wx4eqm
[0] => wx4eqw
)
其他資料:
- geohash演示:
- wiki:
- 原理:
隨著移動終端的普及,很多應用都基於lbs功能,附近的某某(餐館、銀行、妹紙等等)。
基礎資料中,一般儲存了目標位置的經緯度;利用使用者提供的經緯度,進行對比,從而獲得是否在附近。這裡需要在設定出乙個字段,是關於編碼的字段,一會看下文哈……
地理位置距離實現目標:
查詢附近多少公里內的人或者商家
geohash有以下幾個特點:
第一:geohash用乙個字串表示經度和緯度兩個座標。
(這裡插一句:我們的mysql為字段建立的索引,其實原理就是利用二分法演算法來做路徑查詢簡化,快速查詢出想要的字段位置)
第二:geohash表示的並不是乙個點,而是乙個矩形區域。比如編碼wx4g0ec19,它表示的是乙個矩形區域。
第三:編碼的字首可以表示更大的區域。
例如wx4g0ec1,它的字首wx4g0e表示包含編碼wx4g0ec1在內的更大範圍。 這個特性可以用於附近地點搜尋。首先根據使用者當前座標計算geohash(例如wx4g0ec1)然後取其字首進行查詢 (select * from place where geohash like 'wx4g0e%'),即可查詢附近的所有地點。
geohash比直接用經緯度的高效很多。
geohash的原理
geohash的最簡單的解釋就是:將乙個經緯度資訊,轉換成乙個可以排序,可以比較的字串編碼
geohash能做到:
require_once('geohash.class.php');$geohash = new geohash;//得到這點的hash值$hash = $geohash->encode(39.98123848, 116.30683690);//取字首,字首約長範圍越小$prefix = substr($hash, 0, 6);//取出相鄰八個區域$neighbors = $geohash->neighbors($prefix);array_push($neighbors, $prefix);print_r($neighbors);1
2
3
4
5
6
7
8
9
10
11
12
13
14
//得到9個geohash值
array
(
[top] => wx4eqx
[bottom] => wx4eqt
[right] => wx4eqy
[left] => wx4eqq
[topleft] => wx4eqr
[topright] => wx4eqz
[bottomright] => wx4eqv
[bottomleft] => wx4eqm
[0] => wx4eqw
)
其他資料:
- geohash演示:
- wiki:
- 原理:
地理位置geo處理之mongodb geo 索引
title 地理位置geo處理之mongodb geo 索引 date 2017 12 01 10 34 category 方案 目前越來越多的業務都會基於lbs,附近的人,外賣位置,附近商家等等,現就討論離我最近這一業務場景的解決方案。目前已知解決方案有 本文測試下mongodb geo索引 函式...
基於LBS的地理位置附近的搜尋以及由近及遠的排序
from nosql學習之redis資料 一 目前基於lbs地理位置的搜尋已經應用非常廣了,的確是個很方便的東西。我們做程式的就是要考慮如何通過這些功能,來做出更符合使用者的內容來。在網頁端,可以使用html5獲取地理定位。檢視 資料庫中要預存自己的位置資料,如何獲取資料請檢視相關地圖api。字段 ...
常見距離計算方法
不能直接走兩點連線的直線,紅 藍 黃距離一樣長 西洋棋中,國王走一步可以移動到相鄰8個方格中的任意乙個,如下圖。a到b的距離為紅色線,需要走4步,和綠色線距離是相同的。閔氏距離不是一種距離,而是一組距離的定義,是對多個距離度量公式的概括性的表述。兩個n維變數a x11,x12,x1n 與b x21,...