• LBS应用之 根据一点的经纬度实现附近点的查询


     这年头和LBS相关的应用越来越火。从foursquare的热闹程度就可见一般(什么,没听过 foursquare…. 哥们,你 out 了)。和 LBS有关的应用一般都包括一些共同的操作,最常见的一个,就是找附近的东东(餐馆, 商店, 妞…)。 所以, 这里就抛出了一个问题, 怎样才能知道两个物体离得近呢?

     

    例如:用iPhone/android手机定位得到理想国际大厦的经纬度:39.98123848, 116.30683690 然后查找附近的妞根据一点的经纬度实现附近点的查询" title="在SAE上开发LBS应用之 根据一点的经纬度实现附近点的查询"> 

    <?php

    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);

     

    ?>

     

    得到9geohash值:

     

    Array

    (

        [top] => wx4eqx

        [bottom] => wx4eqt

        [right] => wx4eqy

        [left] => wx4eqq

        [topleft] => wx4eqr

        [topright] => wx4eqz

        [bottomright] => wx4eqv

        [bottomleft] => wx4eqm

        [0] => wx4eqw

    )

     

    范围如图:

     

     

     

    用sql语句查询:

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqw%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqx%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqt%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqy%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqq%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqr%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqz%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqv%';

    SELECT * FROM xy WHERE geohash LIKE 'wx4eqm%';

    看一下是否用上索引(一共有50多万行测试数据):

     

     

    根据一点的经纬度实现附近点的查询">

    geohash.class.php下载地址:https://github.com/CloudSide/geohash

     资料:

    ·      geohash演示:  http://openlocation.org/geohash/geohash-js/

    ·      wiki: http://en.wikipedia.org/wiki/Geohash

    ·      原理: http://blog.sina.com.cn/s/blog_62ba0fdd0100tr98.html

  • 相关阅读:
    路由器的配置及使用
    OSI与TCP/IP网络模型
    IP地址
    C++中的虚函数
    虚基类
    【idea】jrebel
    JSON(来自ww3school)
    get与post
    Ajax(来自w3school)
    EasyUI——combotree
  • 原文地址:https://www.cnblogs.com/huangtaozi/p/3822860.html
Copyright © 2020-2023  润新知