首页 电脑 电脑学堂 查看内容

查找附近网点geohash算法及实现

2014-12-19 11:40 818 0

摘要: 参考文档:http://blog.csdn.net/wangxiafghj/article/details/9014363geohash  算法原理及实现方式http://blog.char...
关键词: nbsp geohash 球面 附近 http 前缀 编码 坐标 公式 一个

参考文档:http://blog.csdn.net/wangxiafghj/article/details/9014363geohash  算法原理及实现方式http://blog.charlee.li/geohash-intro/  geohash:用字符串实现附近地点搜索http://blog.sina.com.cn/s/blog_7c05385f0101eofb.html    查找附近点--Geohash方案讨论http://www.wubiao.info/372        查找附近的xxx 球面距离以及Geohash方案探讨http://en.wikipedia.org/wiki/Haversine_formula       Haversine formula球面距离公式http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe   球面距离公式代码实现http://developer.baidu.com/map/jsdemo.htm#a6_1   球面距离公式验证  http://www.wubiao.info/470     Mysql or Mongodb LBS快速实现方案geohash有以下几个特点:首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 (例如MySQL 4之前的版本,Google App Engine的数据层等),利用geohash,只需在一列上应用索引即可。其次,geohash表示的并不是一个点,而是一个矩形区域。比如编码wx4g0ec19,它表示的是一个矩形区域。 使用者可以发布地址编码,既能表明自己位于北海公园附近,又不至于暴露自己的精确坐标,有助于隐私保护。第三,编码的前缀可以表示更大的区域。例如wx4g0ec1,它的前缀wx4g0e表示包含编码wx4g0ec1在内的更大范围。 这个特性可以用于附近地点搜索。首先根据用户当前坐标计算geohash(例如wx4g0ec1)然后取其前缀进行查询 (SELECT * FROM place WHERE geohash LIKE 'wx4g0e%'),即可查询附近的所有地点。Geohash比直接用经纬度的高效很多。Geohash算法实现(Java版本)[java] view plaincopypackage com.DistTest;  import java.util.BitSet;  import java.util.HashMap;    public class Geohash {            private static int numbits = 6 * 5;          final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8',                          '9', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p',                          'q', 'r', 's', 't',  声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部