当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

geohash

经纬度地址编码
授权协议 MIT
开发语言 C/C++ PHP
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 松嘉运
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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);
  •    具体的计算方法:     Latitude的范围是:-90 到 +90    Longitude的范围:-180 到 +180    地球参考球体的周长:40075016.68米,极半径:6356908.8米,赤道半径:6377830,平均半径:6371393    geohash的位数是9位数的时候,误差约为4米;geohash的位数是10位数的时候,误差为0.6米 geohash长度 L

  • import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.geo.*; import org.springframework.data.redis.connection.RedisGeoCommands; import org.springframework.data

  •   转自:https://segmentfault.com/a/1190000002513514 geohash长度 Lat位数 Lng位数 Lat误差 Lng误差 km误差 1 2 3 ±23 ±23 ±2500 2 5 5 ± 2.8 ±5.6 ±630 3 7 8 ± 0.70 ± 0.7 ±78 4 10 10 ± 0.087 ± 0.18 ±20 5 12 13 ± 0.022 ± 0.

  • 公司要求把地图表格化,把一个表格里面的每个店铺的销售量聚合在一起,我在网上搜集资料最后选择了运用GeoHash算法。原理附上大神的地址:http://www.cnblogs.com/LBSer/p/3310455.html val geoHash = filter.map(x => { val lat = x._1.toDouble val lon = x._2.toDouble va

  • GeoHash Geohash library for cplusplus. GeoHash是空间索引的一种方式,特别适合点数据,而对线、面数据采用R树索引更有优势。 Basic Methods #include <catch2/catch.hpp> #include "cgeohash.hpp" size_t precision = 12; double longitude = 112.558

  • 正经学徒,佛系记录,不搞事情 详细的解释交给专业的大佬,我就用用: 来自大佬的详解    geohash的距离估算 工具类: 包含坐标和geohash的转换;查询geohash周围九格的geohash(一个“搜索附近”功能的解决方法) import java.util.BitSet; import java.util.HashMap; import java.util.Map; public c

  • 现今互联网确实从方方面面影响我们的生活。现在我们可以足不出户就能买到我们心仪的衣服,找到附近的美食。当我们点开一个外卖的app就能看到自己附近的餐厅,那我们有没有想过这是怎么实现的呢? 首先我们能想到的就是把所有餐厅的经纬度存下来,然后当用户选择附近餐厅是,我们先获取用户的经纬度,然后到数据库中查出所有的经纬度,依次计算它们和用户间的距离。最后根据用户输入的距离范围过滤出合适的餐厅,并根据距离做一

 相关资料
  • 问题内容: 给定纬度和经度,我们如何使用Javascript或Python将其转换为街道地址? 问题答案: 大多数人在99%的时间内将您链接到Google Maps的API。不错的答案。但是- 注意禁止用途,使用限制和使用条款!尽管许多分布式应用程序并未违反使用限制,但对于Web应用程序而言却是相当有限的。TOS不允许您将皮肤上的数据重新用于Google应用程序中。您不希望因Google发出的终止

  • 本文向大家介绍基于python实现地址和经纬度转换,包括了基于python实现地址和经纬度转换的使用技巧和注意事项,需要的朋友参考一下 中文领域: 指的是提取境内地址的经纬度,的主要调用的是百度API。中间经历了一些波折,刚开始直接使用网上代码debug半天都不行,才发现要随时跟进官方改动,使用别人的API一定要看说明书啊! 首先需要从百度地图平台上注册一个AK(在这之前要注册百度的开发者身份,免

  • 本文向大家介绍使用百度地图api实现根据地址查询经纬度,包括了使用百度地图api实现根据地址查询经纬度的使用技巧和注意事项,需要的朋友参考一下 以上就是代码的全部内容了,小伙伴们可以直接使用在项目中哦,不用跟我说谢谢,请叫我雷锋大大~

  • 请有人帮助我改变我的代码,使谷歌地图API能够请求一个地址在它的地方,因为我想读取地址的用户直接从mySQL数据库。

  • 本文向大家介绍python通过百度地图API获取某地址的经纬度详解,包括了python通过百度地图API获取某地址的经纬度详解的使用技巧和注意事项,需要的朋友参考一下 前言 这几天比较空闲,就接触了下百度地图的API(开发者中心链接地址:http://developer.baidu.com),发现调用还是挺方便的,本文将给大家详细的介绍关于python通过百度地图API获取某地址的经纬度的相关内容

  • 本文向大家介绍百度地图经纬度转换到腾讯地图/Google 对应的经纬度,包括了百度地图经纬度转换到腾讯地图/Google 对应的经纬度的使用技巧和注意事项,需要的朋友参考一下 实现目的:将百度地图经纬度 转换到 腾讯地图/Google 对应的经纬度. 方法1:使用代码进行转换 存在的问题:转换之后误差大,基本不可用 方法2: 该网站提供转换服务,坐标较为准确,可用,后台调用没有仔细研究 http:

  • 问题内容: 我听说可以提交一个地址而不是经度和纬度,这对于我的系统来说将更加可行。用户在创建个人资料时必须输入他们的地址,之后他们的个人资料将显示其房屋的Google地图。我目前可以将Google Maps API与经度和纬度完美配合使用: 请有人帮我修改代码,以便它使Google Maps API可以在其位置请求地址,因为我想直接从mySQL数据库中读取用户的地址。 问题答案: 使用Google

  • 我有一个map活动,上面还有一个EditText,每当地图上有拖动时,我想在EditText中显示不断变化的地址。我目前正在使用Geocoder类根据地图提供的坐标检索地址。但是这种方式在地图的流畅拖动运动中造成了很大的滞后性。是否有更好的方法检索地址或更高效的方法使用Geocoder类?现在,我已经在地图的OnCameraChangeListener事件中实现了getAddress()方法。这是