展开

关键词

首页关键词Geohash

Geohash

相关内容

  • GeoHash索引

    GeoHash简介GeoHash索引是一种基于B树索引,又结合了格网索引的思想的使用广泛的空间索引算法。GeoHash将空间位置编码为一串字符,通过字符串的比较可以得到空间的大致范围。下面举例说明GeoHash编码的具体实现步骤。对于GeoHash索引,需要明确的是:(1)GeoHash编码值表示的并不是一个点,而是一个矩形区域。落在该矩形区域的所有点都可以用该编码表示。(2)字符串越长,表示的范围越精确。一个例子下面的例子用到了一个第三方GeoHash库,我使用maven构建项目,pom文件如下: 4.0.0 cn.tzy geohash 0.0.1-SNAPSHOT jar geohash http:1.3.0 Java代码入下:package cn.tzy.geohash; import java.util.ArrayList;import java.util.List; import ch.hsr.geohash.GeoHash
    来自:
    浏览:616
  • Geohash之范围搜索

    从本质来说,是一个缓冲区分析+空间查找,本文结合Geohash来实现类似的功能。效果?说明:红色的点和红色的圈是查找的中心点和距离(5km);蓝色的点+粉色的点是通过geohash查找出来的点;粉色的点是通过过滤后的点;实现本文实现是结合sqlite数据库实现的,实现的思路如下:1.KEY NOT NULL, poiname NVARCHAR(200), x NUMERIC, y NUMERIC, minzoom INTEGER(2), maxzoom INTEGER(2), geohash根据geohash查找点根据查找的距离范围,先获取geohash的位数,实现方法如下: ** * 获取距离有效位数 * @param radius * @return * public int effectnum
    来自:
    浏览:563
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • 空间索引-geohash算法实现

    算法简介geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等算法基本原理geohash算法将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码,这种方式简单粗暴,可以满足对小规模的数据进行经纬度的检索通过对经纬度的分割,将地球分割成无数的小正方形,每个区域,就是个geohash编码 Geohash其实就是将整个地图或者某个分割所得的区域进行一次划分,由于采用的是base32编码方式,即Geohash中的每一个字母或者数字(如wx4g0e中的w)都是由5bits组成(2^5 = 32,base32),这5bits可以有32中不同的组合(0~31),=$arr;     }     return $str; }这样,就得到了一串wskme6b3字符串了,该字符串就表示了一个区域geohash算法使用: 根据附录精度,传入经纬度生成geohash编码php扩展 php已经实现了对geohash的扩展,其他补充 等有时间,将会把geohash解码算法发出来
    来自:
    浏览:404
  • 报错:python3 geohash 导入错误

    方法一:pip3 install python-geohash方法二:1.安装 pip3 install geohash2.进入包的下载目录 usrlocallibpython3.5dist-packages3.mv Geohash geohash4.cd geohash修改__init__.py文件from geohash import decode_exactly, decode, encode修改为:from.geohash import decode_exactly, decode, encode
    来自:
    浏览:199
  • GeoHash原理和可视化显示

    面数据GeoHash编码实现上一节介绍的标准GeoHash算法只能用来计算二维点坐标对应的GeoHash编码,我们的场景中还需要计算面数据(即GIS中的POLYGON多边形对象)对应的GeoHash编码以此GeoHash块为起点,循环往东、往北找相邻的同等大小的GeoHash块,直到找到的GeoHash块完全超出MBR的范围才停止。求临近GeoHash块的快速算法上一节对面数据进行GeoHash编码的流程图中标记为绿色和橘黄色的两步,分别是要寻找相邻的东边或北边的GeoHash字符串。传统的做法是,根据当前GeoHash块的反解信息,求出相邻块内部的一点,在对这个点做GeoHash编码,即为相邻块的GeoHash编码。通过观察GeoHash编码表的规律,结合GeoHash编码使用的Z阶曲线的特性,验证了一种通过查表来快速求相邻GeoHash字符串的方法。
    来自:
    浏览:1370
  • 地理位置计算之geohash算法

    特点:geohash用一个字符串表示经度和纬度两个坐标(可以加索引)geohash表示的并不是一个点,而是一个矩形区域geohash编码的前缀可以表示更大的区域。,每个区域,就是个geohash编码geohash其实就是将整个地图或者某个分割所得的区域进行一次划分,由于采用的是base32编码方式,即Geohash中的每一个字母或者数字(如wx4g0e中的w)都是由Geohash的最简单的解释就是:将一个经纬度信息,转换成一个可以排序,可以比较的字符串编码Geohash类namespace geohash;** * * Encode and decode geohashes编码$geohash = new Geohash(); 生成逆地理位置编码 $data = $geohash->encode($latitude,$longitude);当用户进入APP后,授权获取到用户当前位置的经纬度,然后获取附近的geohash值$geohash = new Geohash(); 将用户的精度的geohash $astr = $geohash->encode($lat,$lng); 取前缀,前缀越长范围越小
    来自:
    浏览:783
  • FME应用之-Geohash decode

    这篇推送的来源昨天有个朋友在我的技术交流群里问,如何将geohash进行解码,变成经纬度?如何解码,当然首选方式必须是我万能的FME啊!如何做?造数据的逻辑首先加载含有xy的数据,使用Python的geohash包进行encode处理。encode后的数据写出到文本中供FME使用。处理依然来一张胜千言的图吧! ?从图中可以看到,FME支持Geohash这种数据格式。读取这种格式后,FME可以直接把它当成了矢量要素,XY信息也都得出来了,用户可以根据自己的需要写成各种需要的格式,非常方便。
    来自:
    浏览:353
  • Geohash介绍及针对具体需求的改良

    Geohash算法    地图上一般是使用经度和纬度两个维度来唯一的确定一个点,而geohash采用经纬度二维值转为一维的值。   减少计算的次数提高性能降低geohash有效值的位数自定义经纬度范围可选定一个趋于正方形的范围,当计算结果为一个圆形区域,这样能更好的和圆契合。   length代表的是标准geohash算法中的字符长度,可以看出当geohash的长度为8时,误差(km error)为19米,当长度为7时,误差为76米,当长度为6时,误差为610米,可以看出随着geohash这里的误差其实只是个大概的数量级,代表的是geohash对应的矩形区域的对角线长度的二分之一。    我的需求对应区域的大小控制需要更精确,我希望我通过缩短geohash一位不至于导致区域增大过快,所以我这里采用geohash的二进制转成64位long型值作为geohash值。高位为有效位,低位补0。
    来自:
    浏览:666
  • 周围的餐馆有哪些?GeoHash算法

    这篇博客将会讲述这个技术背后的GeoHash算法以及基本的实现。GeoHash的原理就是讲一个地理位置的经纬度,转换成一个可以排序,可以比较的的Hash字符串。这个字符串。值这样的话只要在坐标入库的时候程序顺便算出坐标的GeoHash值一并入库,就可以实现快速进行周边餐馆查找之类的功能了。测试为了看一下这个算法的可行性,我写了一个爬虫来访问高德地图来不断检索地址并且算出Geohash(文章最后会给出整个爬虫和算法的代码)?Screen Shot 2016-05-06 at 11.42.00 PM下面是GeoHash的精度表:GeoHash长度Lat位数Lng位数Lat误差Lng误差km误差123±23±23±2500255
    来自:
    浏览:358
  • Geohash第三方库示例

    关于什么是Geohash可以参考这篇文章Java实现空间索引编码(GeoHash),个人觉得写得不错。Github上有一个Geohash的开源库geohash-java,这篇文章主要通过一个示例说说geohash-java这个库怎么用。 好了,开门,放代码!package cn.tzy.geohash; import java.util.ArrayList;import java.util.List; import ch.hsr.geohash.GeoHashlonCode.toString()); }}输出结果:经纬度坐标: (30.549608, 114.376971)二进制编码:1110011001000111001101110010011011011010Geohash
    来自:
    浏览:828
  • GeoHash 经纬度坐标编码与解码算法

    内部的实现采用的是GeoHash算法,其实质其实是二分法。一个在城区,一个在郊区,城区的GeoHash字符串之间比较相似,郊区的字符串之间也比较相似,而城区和郊区的GeoHash字符串相似程度要低些。另外,就像是饿了么、美团在选餐时利用当前位置的GeoHash的字符串返回共享这一GeoHash字符串的矩形区域来推荐是一个查询速度快并且实用的策略。GeoHash编码存在的问题GeoHash 虽然能解决从二维到一维的转变,但也存在一些问题。解决的思路很简单,我们查询时,除了使用定位点的GeoHash编码进行匹配外,还使用周围8个区域的GeoHash编码,这样可以避免这个问题。
    来自:
    浏览:1021
  • 空间索引 - GeoHash算法及其实现优化

    今天要介绍的GeoHash算法实现的空间索引,虽然是以B树实现,但我认为它也借用网格索引的一部分思想。GeoHash原理GeoHash 算法的原理说起来是很简单的,如下图:?同样的前缀意味着可以使用 B树 索引查找有相同前缀的点作为附近的点,GeoHash 算法便是这些同样的前缀上面做文章。墨卡托投影墨卡托投影,是正轴等角圆柱投影。小结花费了十多个小时,总算将 GeoHash 完全整体了一遍,完全理解 GeoHash 并没有想像中的那么简单。除了 GeoHash,四叉树和R树据说查询效率会更高,有时间再研究一下。参考:GeoHash核心原理解析Redis GEO 源码注释GeoHash位数精度对照表(wiki百科): GeoHash lengthlat bitslng bitslat errorlng errorkm
    来自:
    浏览:897
  • geohash之2d 地理空间索引

    在创建索引时,MongoDB会将位置数据转换为二进制 geohash值,并使用位置数据和索引的位置范围计算这些值,如 位置范围中所述。Geohash值 要创建地理空间索引,MongoDB会计算 指定范围内坐标对的geohash值,并为该点的地理散列编制索引。要计算geohash值,请连续将2D地图划分为象限。左上象限将具有01的geohash 。右下角和右上角的分别为10 和11。为了提供更高的精度,继续将每个象限划分为子象限。每个子象限都将包含象限的地理哈希值与子象限的值连接起来。要计算更精确的geohash,请继续划分子象限并连接每个分区的两位标识符。给定点的散列标识符中的“比特”越多,散列可以描述的可能区域越小,地理空间索引的分辨率越高。
    来自:
    浏览:326
  • python实现地理位置类数据爬取与geohash应用初探

    python3如何使用geohash呢,网上说使用pip install geohash后import geohash 会报错,当然同样的作者提供了geohash包的fix版geohash2,所以安装时候应该是pip install geohash2我很纳闷的是python中能够生成geohash 的包实在是太多了:???3.1 获取包围盒可以看到7位geohash编码带上一个包围盒,相对于6位geohash编码准确许多??:#e.gimport geohash2print (Geohash for 42.6, -5.6:, geohash2.encode(42.6, -5.6))#Geohash for 42.6, -5.6, -5.6: ezs42print (Coordinate for Geohash ezs42:, geohash2.decode(ezs42))#Coordinate for Geohash ezs42
    来自:
    浏览:1893
  • 高效的多维空间点索引算法 — Geohash 和 Google S2

    说到这里可能读者依旧一头雾水,不知道 Geohash 和 Z 曲线究竟有啥关系?其实 Geohash算法 的理论基础就是基于 Z 曲线的生成原理。继续说回 Geohash。由于这个特性,Geohash 就常常被用来作为唯一标识符。用在数据库里面可用 Geohash 来表示一个点。Geohash 这个公共前缀的特性就可以用来快速的进行邻近点的搜索。Geohash 增加到7位。?当Geohash 增加到7位的时候,网格更小了,美罗城的 Geohash 变成了 wtw37qt。看到这里,读者应该已经清楚了 Geohash 的算法原理了。可以看到中间大格子的 Geohash 的值是 wtw37q,那么它里面的所有小格子前缀都是 wtw37q。可以想象,当 Geohash 字符串长度为5的时候,Geohash 肯定就为 wtw37 了。Geohash 具体实现到此,读者应该对 Geohash 的算法都很明了了。接下来用 Go 实现一下 Geohash 算法。
    来自:
    浏览:1840
  • 【戴嘉乐 IPFS】基于IPFS和GeoHash构建具有地理位置价值服务的DDApp(理论篇)

    GeoHash Geohash是由Gustavo Niemeyer发明的公共域地理编码系统,它将一个地理位置编码成一串字母和数字。GeoHash数据将具有如下3个特点:1 GeoHash将二维的经纬度转换成字符串,比如下图展示了北京9个区域的GeoHash字符串,分别是WX4ER,WX4G2、WX4G3等等,每一个字符串代表了某一矩形区域,由于这些用户的GeoHash字符串都是WX4ER,所以可以把WX4ER当作key,把该区域的餐馆信息当作value来进行缓存,而如果不使用GeoHash的话,由于区域内的用户传来的经纬度是各不相同的,如下两个图所示,一个在城区,一个在郊区,城区的GeoHash字符串之间比较相似,郊区的字符串之间也比较相似,而城区和郊区的GeoHash字符串相似程度要低些。我们已经知道现有的GeoHash算法使用的是Peano空间填充曲线,这种曲线会产生突变,造成了编码虽然相似但距离可能相差很大的问题,因此在基于个人位置查询附近Poi信息时,首先筛选GeoHash编码相似的
    来自:
    浏览:296
  • 3分钟了解Mysql空间搜GeoHash

    应用场景介绍:    公司新业务的需求,希望能够实现当前位置快速显示共享信息数据,针对5.7新特性的支持度调研,利用GeoHash封装成内置数据库函数的简易方案,实现前期的初期业务。
    来自:
    浏览:817
  • 附近的人位置距离计算方法

    like wx4g0t% or geohash like wx4g0w% or geohash like wx4g0s% 5 or geohash like wx4g0v% or geohash likewx4g0m% or geohash like wx4g0q% 6 or geohash like wx4g0y% or geohash like wx4g0u% or geohash like wx4g0klike wx4g0% or geohash like wx4g2% or geohash like wx4fb% 5 or geohash like wx4g1% or geohash like wx4ep% or geohash like wx4er% 6 or geohash like wx4g3% or geohash like wx4fc% or geohash like wx4dz%) 7 and( 8 geohash not like wx4g0t% or geohash not like wx4g0w% or geohash not like wx4g0s% 9 or geohash not
    来自:
    浏览:1092
  • 是什么能让 APP 快速精准定位到我们的位置?

    本文作者:smallyang,腾讯 IEG 开发工程师 什么是geohash?它的原理是什么?它帮助我们解决了哪些痛点,本文为你娓娓道来。本文包含以下内容,阅读完需要约10分钟: 我们日常生活中遇到哪些定位的场景 简单复习一下经纬度 geohash原理解析 geohash存在的边界问题 如何解决边界问题 计算两点距离的计算 geohash答案就是 geohash geohash通过算法将1个定位的经度和纬度2个数值,转换成1个hash字符串。如果2个地方距离越近,那么他们的hash值的前缀越相同。 where geohash like wtw366% ; select * from cart where LEFT(geohash, 6) = wtw366; 简单复习一下经纬度 在大致了解什么是geohash之后,我们先来复习一下什么是经纬度(高中学的,可能已经忘记光了(逃)),这对于理解geohash有很大的帮助。
    来自:
    浏览:341
  • Redis 到底是怎么实现“附近的人”这个功能的?

    double类型精度为52位;geohash是以base32的方式编码,52bits最高可存储10位geohash值,对应地理区域大小为0.6*0.6米的格子。这个范围参数包括满足条件的最高的geohash网格等级(精度) 以及 对应的能够覆盖目标区域的九宫格位置;(后续会有详细说明)3、对九宫格进行遍历,根据每个geohash网格的范围框选出位置对象。在多层geohash网格中,每个低等级的geohash网格都是由4个高一级的网格拼接而成(如图)。?换句话说,geohash网格等级越高,所覆盖的地理位置范围就越小。如何通过geohash网格的范围框选出元素对象?效率如何?首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。所以在查询时,只要找到集合中处在目标geohash网格中的第一个值,后续依次对比即可,不用多次查找。 九宫格不能一起查,要一个个遍历的原因也在于九宫格各网格对应的geohash值不具有连续性。
    来自:
    浏览:149

扫码关注云+社区

领取腾讯云代金券