国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP使用Redis的GEO(地理位置)命令

2020-03-22 19:11:48
字體:
來源:轉載
供稿:網友
Redis自3.2版本開始新增對GEO(地理位置)的支持,但是地球不是一個完美的球體,在最壞的情況下的偏差可能是0.5%。接近兩極的區域是不支持的,支持坐標的有效的經度從-180度到180度;有效的緯度從-85.05112878度到85.05112878度,超出范圍將會報錯。

我喜歡爬山,學習GEO的時候我也以山的坐標做演示,我的坐標是:

116.517159,39.922267

我整理了一些山的坐標

$mountainCoordinates = array(    array('115.793844', '40.584459', 'Hai_tuo'),//海陀山坐標    array('115.056232', '39.948933', 'Small_wutai'),//小五臺山坐標    array('114.173822', '27.474563', 'Wu_gong'),//武功山坐標    array('111.341648', '25.518178', 'Leek_ridge'),//韭菜嶺坐標    array('103.901761', '31.60487', 'Jiu_ding'),//九頂山坐標    array('107.398009', '34.057777', 'Ao_Shan'),//鰲山坐標);

1.向mountainCoordinates的key里增加坐標

try {    $redis = new Redis();    $redis->connect('192.168.75.132', 6379);    foreach ($mountainCoordinates as $coordinates){        $param = array('geoadd', 'mountainCoordinates');        $param = array_merge($param, $coordinates);        $ret = call_user_func_array(array($redis, 'rawCommand'), $param);        print_r($ret);    }} catch (Exception $e){    echo $e->getMessage();}

執行結果

int(1)int(1)int(1)int(1)int(1)int(1)

2.獲取坐標

try {    $redis = new Redis();    $redis->connect('192.168.75.132', 6379);    $param = array('geopos', 'mountainCoordinates', 'Hai_tuo', 'Wu_gong', 'Jiu_ding');    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);    print_r($ret);} catch (Exception $e){    echo $e->getMessage();}

執行結果

Array(    [0] => Array        (            [0] => 115.79384654760360718            [1] => 40.58445845049069334        )    [1] => Array        (            [0] => 114.1738244891166687            [1] => 27.47456377424472151        )    [2] => Array        (            [0] => 103.90176326036453247            [1] => 31.60486909089710394        ))

3.計算兩個坐標間距離

try {    $redis = new Redis();    $redis->connect('192.168.75.132', 6379);    $param = array('geodist', 'mountainCoordinates', 'Hai_tuo', 'Small_wutai', 'km');    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);    var_dump($ret);} catch (Exception $e){    echo $e->getMessage();}

執行結果:海陀山和小五臺山之間距離是94.4219km

string(7) "94.4219"

4.以我的坐標為原點,按半徑100km取坐標(找出離我100公里以內的山)

try {    $redis = new Redis();    $redis->connect('192.168.75.132', 6379);    $param = array('georadius', 'mountainCoordinates', '116.517159', '39.922267', '100', 'km', 'WITHDIST', 'WITHCOORD');    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);    print_r($ret);} catch (Exception $e){    echo $e->getMessage();}

執行結果:只有海陀山,離我95.8884km

Array(    [0] => Array        (            [0] => Hai_tuo            [1] => 95.8884            [2] => Array                (                    [0] => 115.79384654760360718                    [1] => 40.58445845049069334                )        ))

5.以我的坐標為原點,按半徑1500km取坐標(找出離我1500公里以內的山)

try {    $redis = new Redis();    $redis->connect('192.168.75.132', 6379);    $param = array('georadius', 'mountainCoordinates', '116.517159', '39.922267', '1500', 'km', 'WITHDIST', 'WITHCOORD');    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);    print_r($ret);} catch (Exception $e){    echo $e->getMessage();}

執行結果:找出了5座山

Array(    [0] => Array        (            [0] => Jiu_ding            [1] => 1464.4350            [2] => Array                (                    [0] => 103.90176326036453247                    [1] => 31.60486909089710394                )        )    [1] => Array        (            [0] => Ao_Shan            [1] => 1039.1217            [2] => Array                (                    [0] => 107.3980066180229187                    [1] => 34.05777705537607147                )        )    [2] => Array        (            [0] => Wu_gong            [1] => 1401.2353            [2] => Array                (                    [0] => 114.1738244891166687                    [1] => 27.47456377424472151                )        )    [3] => Array        (            [0] => Small_wutai            [1] => 124.6283            [2] => Array                (                    [0] => 115.05623370409011841                    [1] => 39.94893288365195616                )        )    [4] => Array        (            [0] => Hai_tuo            [1] => 95.8884            [2] => Array                (                    [0] => 115.79384654760360718                    [1] => 40.58445845049069334                )        ))        

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梅河口市| 吉隆县| 个旧市| 格尔木市| 玉溪市| 安新县| 高台县| 铁力市| 安远县| 奉贤区| 岳池县| 都昌县| 马龙县| 崇信县| 封丘县| 祥云县| 大名县| 腾冲县| 泸水县| 南昌县| 孟津县| 乌拉特后旗| 云南省| 丰都县| 闸北区| 景宁| 华安县| 松桃| 翁牛特旗| 巴青县| 全州县| 湄潭县| 灯塔市| 宜兰市| 金湖县| 时尚| 郯城县| 白朗县| 贡嘎县| 轮台县| 闻喜县|