geo算法

简介

Geohash是用于将二维经纬度映射成一个一维编码,可以排序,可以比较。方便计算机存储与索引。

原理

分别将经纬度进行二等分逐渐逼近真正的目标经纬度,以维度(39.92324)为例:

  1. 将维度范围[-90,90]二等分成两个区间[-90,0][0,90],如果目标维度位于前一个区间,则编码为0,否则为1.
  2. 维度(39.92324)在[0,90]区间内,所以第一个编码为1。
  3. 再将[0,90]区间二等分成[0,45][45,90],维度(39.92324)在[[0,45]]区间内所以为0
  4. 以此类推到自己想要的精度
    这里就推到第三次维度编码为:101
    同理经度(116.39569)为例对(-180, 180)依次细分推出编码为:110
  5. 接下来将经纬度合并奇维偶经,奇数位是维度,偶数位是经度。得到111001在这里插入图片描述
  6. 最后,用0-9,b-z(去掉ailo)这32个字符 进行base32编码,得到wx
    111001转成十进制是57=28+29 即是wx
    在这里插入图片描述

解码算法与编码算法相反,先进行base32解码,然后分离出经纬度,最后根据二进制编码对经纬度范围进行细分即可。也可以直接去geohash.org网站上解析。这里不再赘述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值