当前位置:  软件>C/C++软件

经纬度地址编码 geohash

    来源:    发布时间:2014-12-31

    本文导语:  geohash简介: geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。geohash有以下几个特点: 首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 (例如MySQL 4之前的版本,Goo...

geohash简介:

geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。

geohash有以下几个特点:

首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 (例如MySQL 4之前的版本,Google App Engine的数据层等),利用geohash,只需在一列上应用索引即可。

其次,geohash表示的并不是一个点,而是一个矩形区域。比如编码wx4g0ec19,它表示的是一个矩形区域。 使用者可以发布地址编码,既能表明自己位于北海公园附近,又不至于暴露自己的精确坐标,有助于隐私保护。

第三,编码的前缀可以表示更大的区域。例如wx4g0ec1,它的前缀wx4g0e表示包含编码wx4g0ec1在内的更大范围。 这个特性可以用于附近地点搜索。首先根据用户当前坐标计算geohash(例如wx4g0ec1)然后取其前缀进行查询 (SELECT * FROM place WHERE geohash LIKE 'wx4g0e%'),即可查询附近的所有地点。Geohash比直接用经纬度的高效很多。

用途:

移动互联网,lbs可以说是一个基础应用,geohash对于解决附近地点搜索提供了一个有效的解决方案。

扩展:

这个php扩展,提供了三个函数:

/**
    *  $latitude    //纬度
    *  $longitude   //经度
    *  $precision   //精密度, 默认是12
    *  返回 $precision 长度的 string
    */
   geohash_encode($latitude, $longitude, $precision=12);  



   /**
    *  $hash    //geohash_encode后的值
    *  返回 array // Array
    *                    (
    *                        [latitude] => 39.416916975752
    *                        [longitude] => 100.92223992571
    *                        [north] => 39.416917059571
    *                        [east] => 100.92224009335
    *                        [south] => 100.92223992571
    *                        [west] => 100.92223975807
    *                    )
    */
   geohash_decode($hash);

   /**
    *  $hash    //geohash_encode后的值
    *  返回 在$hash 8个 (东南西北各二个)附近的hash值
    */
   geohash_neighbors($hash);


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3