geohash 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
geohash 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 MIT
开发语言 C/C++ PHP
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开发厂商
地区 国产
提 交 者 半桶水_桶哥
适用人群 未知
收录时间 2014-02-13

软件简介

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);
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
发表了资讯
2014/02/14 00:00

php 的经纬度地址编码 geohash 扩展 1.1 发布

今天是个特殊的日子,祝大家双节快乐, 还有就是措施要做好。(凡士林的搞起) 【更新】 1. 对geohash_encode 传入的经纬度参数做了简单的校验, 如果经纬度有错,会出一个notice级别的日志 2. 新增 geohash_dimension方法。可以查看某一精密度下的矩形大小,(对范围大小查看很有帮助)。 /**    *  $precision   ...

12
55
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2015/10/27 15:24

Geohash

Geohash

0
0
发表了博客
2019/04/29 11:37

GeoHash

1. 简介 Geohash是一种地理编码,用于将二维经纬度映射成一维编码,方便计算机存储与索引。 2. 基本原理 分别将经纬度进行二等分逼近编码,按照所属区域进行连续编码,最后将两组编码混合进行Base32编码,便生成Geohash编码。 如下所是对经纬度(110.53785, 39.92324)进行Geohash编码: 经度范围 区间编码:0 ...

0
0
发表了博客
04/23 13:38

geohash 算法

http://www.cnblogs.com/LBSer/p/3310455.html 引子   机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐。   饭饱之后机机开始反思了,地图后台如何根据自己所在位置查询来查...

0
0
发表了博客
2019/10/07 23:04

Redis GeoHash

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11632810.html 背景 微信找附近的人,滴滴找附近的单车,饿了么找附近的餐馆 GeoHash算法 可以使用数据库来进行查询,但是数据库查询性能毕竟是有限的,如果“附近的人”查询请求非常多,在高并发场景下,对数据库的压力还是相当大的,不是一个很好的方案。 ...

0
0
发表了博客
2019/10/28 21:33

redis之GeoHash

Redis 提供的 Geo 指令只有 6 个,它只是一个普通的 zset 结构。 增加 geoadd 指令携带集合名称以及多个经纬度名称三元组,注意这里可以加入多个三元组 127.0.0.1:6379> geoadd company 116.48105 39.996794 juejin (integer) 1 127.0.0.1:6379> geoadd company 116.514203 39.905409 ireader (integer) 1 127.0.0.1:63...

0
0
发表于开发技能专区
2018/07/30 10:52

GeoHash简介

参考文档: http://blog.csdn.net/wangxiafghj/article/details/9014363geohash 算法原理及实现方式 http://blog.charlee.li/geohash-intro/ geohash:用字符串实现附近地点搜索 http://blog.sina.com.cn/s/blog......

0
0
发表于服务端专区
2016/06/08 17:37

Geohash算法

Geohash算法描述

0
14
发表于开发技能专区
05/26 00:30

Redis之GeoHash

在生活中我们有时候需要点外卖、骑共享单车等等,我们打开软件找到附近餐厅、离我最近的单车,那么他们是怎么快速定位到的呢?我们把地图看作一个二维平面,我们在某个点上然后找到附近10km内的所有餐厅,这时候我...

0
0
发表了博客
2019/04/10 10:10

ABAP实现Geohash

前几天群里有人问ABAP有没有Geohash函数,用来帮助SAP存储门店位置、实现查找附近门店的功能。因为没有查到,所以我动手写了一个。 Geohash是什么 Geohash是一种公共域地理编码系统,它将一个地理位置编码成一串字母和数字。字符串越长,表示的范围越精确。两个Geohash字符串的相同前缀越多,表示它们所代表的地点的距离...

0
0
发表了博客
2019/08/19 23:23

Geohash精度和原理

转自:https://blog.csdn.net/u011497262/article/details/81210634    https://www.jianshu.com/p/1ecf03293b9a geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码,这种方式简单粗暴,可以满足对小规模的数据进行经纬度的检索 目录: 经纬度常识 ...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
39 收藏
分享
返回顶部
顶部