首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是什么能让 APP 快速精准定位到我们的位置?

在数据库里,把经纬度都标记为索引,通过查找对比经纬度的值,来找到附近1km的车子,但是这种做法第一是索引比较多,数值比较大,二是需要循环遍历经纬度,查询会很慢,效率很低。...那么,这些APP是怎么做到,既能精准定位,又能快速查找呢?答案就是 geohash geohash通过算法将1个定位的经度和纬度2个数值,转换成1个hash字符串。...指定一个位置的经纬度坐标值。 根据十字坐标图和二分法,将纬度和经度划分成1和0的二进制数字串。 按照“偶数位放经度,奇数位放纬度”算法,合并经度和纬度这2个二进制数字串。..." 现在需要按照”偶数位放经度,奇数位放纬度”,将这2个数字串,合二为一。...redis中经纬度使用52位的整数进行编码,放进zset中,zset的value元素是key,score是GeoHash的52位整数值。

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    揭秘!是什么能让APP快速精准定位?

    在数据库里,把经纬度都标记为索引,通过查找对比经纬度的值,来找到附近1km的车子,但是这种做法第一是索引比较多,数值比较大,二是需要循环遍历经纬度,查询会很慢,效率很低。...所以,我们常用十字坐标法来表示经纬度坐标图: 注意:我们一般读“经纬度”,其实,表示一个定位的书面经纬度是 “(纬度,经度)”。...指定一个位置的经纬度坐标值。 根据十字坐标图和二分法,将纬度和经度划分成1和0的二进制数字串。 按照“偶数位放经度,奇数位放纬度”算法,合并经度和纬度这2个二进制数字串。..." 现在需要按照"偶数位放经度,奇数位放纬度",将这2个数字串,合二为一。...redis中经纬度使用52位的整数进行编码,放进zset中,zset的value元素是key,score是GeoHash的52位整数值。

    1.5K20

    (数据科学学习手札59)从抓取数据到生成shp文件并展示

    ,面我们选择重庆市三峡博物馆,考虑到只是简单演示小规模采集数据,因此选择selenium作为数据爬取的工具,首先我们需要操纵模拟浏览器打开高德地图查找内容的页面(即query带有关键词),这样做的目的是让我们的浏览器加载所需接口对应的...,接下来进行清洗; 2.2 数据清洗   首先提取点数据,rawSHP为字典,键为线路名称,值为所对应包含的全部内容,我们需要的经纬度信息就包含在其中,以环线为例: ?   ...按照上图箭头所指的路径便可找到对应的站点名称name和经纬度xy_coords,而对于线数据,如下图: ?    ...,最大限制为‘2046’   point:传入点的经度与纬度   line:传入单条或多条线每个折点的经纬度   poly:传入面中对应每个边界点的经纬度   除了上述三种最基本的,还有很多传入其他格式矢量信息的方法...(火星坐标系)转GPS84 :param lng:火星坐标系的经度 :param lat:火星坐标系纬度 :return: """

    2.1K40

    Leaflet 与高德继续碰撞火花!

    lng = ~lng, ## 变量经度(longitude)所在列 label = ~address ## 变量标签所在列(这里设置了详细的地址作为标签) )...,这样子我们就可以知道绘制路径地图的数据至少需要 4 个值,分别表示起点的经纬度和终点的经纬度。...知道了绘图需要的基本数据,后面的就简单了,只要分别查询两个点的经纬度把他们合并到一个表就好了,这里就不赘述了。有数据的朋友也可以直接把数据整理下就行,下面的例子使用上面绘制散点地图的数据。...= lat[1], ## 新增起点纬度 lng_start = lng[1] ## 新增起点经度 ) df_line ##...( data = df_line, ## 存放有坐标文件 lng = ~lng, ## 变量经度(longitude)所在列 lat = ~lat, ## 变量纬度(latitude

    3.2K20

    Geohash算法原理及实现

    Geohash算法就是将经纬度编码,将二维变一维,给地址位置分区的一种算法。 经纬度常识 经线是纵的,经度是横的,用于表示不同的经线,纬线是横的,纬度是纵的,用于表示不同的纬线,如下图 ? ?...纬线:地球仪上的横线,lat,赤道是最大的纬线,从赤道开始分为北纬和南纬,都是0-90°,纬线是角度数值,并不是米; 经线:地球仪上的竖线,lng,子午线为0°,分为西经和东经,都是0-180°,经线也是角度数值...,数字由大到小依次经过北美洲到达西欧.纬度0度的位置为赤道 基本原理 GeoHash是一种地址编码方法。...他能够把二维的空间经纬度数据编码成一个字符串 我们知道,经度范围是东经180到西经180,纬度范围是南纬90到北纬90,我们设定西经为负,南纬为负,所以地球上的经度范围就是[-180, 180],纬度范围就是...不过仍然有一个问题需要解决,就是如何计算周边的8个区域key值呢 假设我们计算的key值是6位,那么二进制位数就是 6*5 = 30位,所以经纬度分别是15位。我们以纬度为例,纬度会均分15次。

    2K20

    美团如何查询附近商家

    如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。...设第一点A的经纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-...,按经度、纬度、经度、维度……这样的顺序,一位一位的进行放置: (11010110,10110001)-->1110011100101001 奇数位的红色是经度编码,偶数位的黑色是纬度编码 我们可以用16...维基百科上找到了这样的一张对应表: ? 当有一个32位数字的时候,精细度大概是2500公里,当有8个数字的时候,精细度大概是0.019km = 19米。...也就是说,8个32位的数字 对应 8*5=40个二进制数,也就是经纬度分别划20次,就可以达到19米的精细度。

    5.3K20

    Python实践 | 亿级经纬度距离计算工具V2

    阅读文本大概需要 8 分钟。 计算经纬度的代码网上一搜一大把,通常是单点距离的计算,无法实现批量计算,本文将利用pandas实现亿级经纬度距离代码的实现。...由于地球是球形,不同纬度下,同一经度差值对应的距离不同,纬度相同且纬度越大时,同一经度对应的距离越小,中国经纬度跨度约为73°33′E至 135°05′E;纬度范围:3°51′N至53°33′N,此处为了计算最大经度差值...,我们选取纬度为54.0;不同经度下,同一纬度差异对应的距离相同 ?...(经纬度差值大于某个值,距离大于某个值,参见参数表 x = m[abs(m.lon-m.lon2) < diff_lon] n = x[abs(x.lat-x.lat2) 纬度值54.0获取了最大的经度差值,随着纬度减小,此时计算的距离会大于该阈值,所以要对初次计算结果进行过滤,得出满足阈值的条目: 1distance = distance.append(nn[

    2.5K31

    Python实践 | 亿级经纬度距离计算代码实现

    阅读文本大概需要 8 分钟。 计算经纬度的代码网上一搜一大把,通常是单点距离的计算,无法实现批量计算,本文将利用pandas实现亿级经纬度距离代码的实现。...由于地球是球形,不同纬度下,同一经度差值对应的距离不同,纬度相同且纬度越大时,同一经度对应的距离越小,中国经纬度跨度约为73°33′E至 135°05′E;纬度范围:3°51′N至53°33′N,此处为了计算最大经度差值...,我们选取纬度为54.0;不同经度下,同一纬度差异对应的距离相同 ?...(经纬度差值大于某个值,距离大于某个值,参见参数表 1n=m[abs(m.lon-m.lon2)<diff_lon][abs(m.lat-m.lat2)<diff_lat] 得到下图表格: ?...,我们选取纬度值54.0获取了最大的经度差值,随着纬度减小,此时计算的距离会大于该阈值,所以要对初次计算结果进行过滤,得出满足阈值的条目: 1distance=distance.append(n[n.distance

    4.3K30

    Geohash原理

    引言 GeoHash本质上是空间索引的一种方式,其基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码。...GeoHash算法 以经纬度值:(116.389550, 39.928167)进行算法说明,对纬度39.928167进行逼近编码 (地球纬度区间是[-90,90] a....Geohash的0、1串序列是经度0、1序列和纬度0、1序列中的数字交替进行排列的,偶数位对应的序列为经度序列,奇数位对应的序列为纬度序列,在进行第一次划分时,Geohash0、1序列中的前5个bits...为什么分别给经度和维度编码?为什么需要将经纬度两串编码交叉组合成一串编码?本节试图回答这一问题。...lat_min,lat_max,lng_min,lng_max 4.4 计算lat_min,lat_max,lng_min,lng_max对应范围内左右geohash的二进制编码,然后将经纬度二进制编码

    3.7K40

    我背着女朋友,用 Python 偷偷抓取了她的行踪

    照片的Exif信息中包含了位置信息,即经纬度坐标。...03 编写脚本 整个操作分为 3 步骤,分别是获取图片的经度和纬度、对经度和纬度进行数据矫正、调用高德逆地理编码 API 获取具体位置。 第 1 步,获取图片的「经度和纬度」。...return 如果女友没有撒谎,那么可以进行第 2 步的操作。 因为通过 GPS 获取的经度、纬度和高德地图的坐标存在一定的误差,这里需要把坐标转换为「火星坐标系」。...+ dlng return [mglng, mglat] 另外需要注意的是,接口中经度、纬度参数只能识别小数点后 6 位,需要对经纬度中的度、分、秒做一定的数据处理,然后再进行四舍五入。...def __format_lati_long_data(self, data): """ 对经度和纬度数据做处理,保留6位小数 :param data: 原始经度和纬度值

    2K71

    【实战】我背着女朋友,用 Python 偷偷抓取了她的行踪

    3 编 写 脚 本 整个操作分为 3 步骤,分别是获取图片的经度和纬度、对经度和纬度进行数据矫正、调用高德逆地理编码 API 获取具体位置。 第 1 步,获取图片的「经度和纬度」。...return 如果女友没有撒谎,那么可以进行第 2 步的操作。 因为通过 GPS 获取的经度、纬度和高德地图的坐标存在一定的误差,这里需要把坐标转换为「火星坐标系」。...+ dlng return [mglng, mglat] 另外需要注意的是,接口中经度、纬度参数只能识别小数点后 6 位,需要对经纬度中的度、分、秒做一定的数据处理,然后再进行四舍五入。...def __format_lati_long_data(self, data): """ 对经度和纬度数据做处理,保留6位小数 :param data: 原始经度和纬度值...def __get_address(self, location): """ 根据坐标得到详细地址 :param location: 经纬度值 :return:

    1.2K20

    3分钟搞定微信小程序类美团用户商家距离计算

    ; 先熟悉下两个单词: longitude:经度; latitude:纬度; 下边是两种方法的具体实现 一、获取用户的位置信息,再进行计算(wx.getLocation) 1.小程序提供了获取用户位置信息的...api,所以我们能直接获取到经纬度; 2.在腾讯位置服务坐标拾取器,获取商家的具体经纬度(例:北京故宫博物院116.397027(经度),39.917990(纬度)); 3.利用公式进行两点的经纬度计算...// lat1用户的纬度 // lng1用户的经度 // lat2商家的纬度 // lng2商家的经度 var radLat1 = this.Rad...下图的第三步配置是要在小程序的后台那里设置,记得不要找错地方了。...31fd18eb8b844cec9ec524dd8ef9373b~tplv-k3u1fbpfcp-zoom-1.image] 2、配置完成了之后,小程序重新编译一下 3、求两点距离文档:腾讯位置-两点求距 4、读完可知,我们只需要商家的经纬度即可

    1.7K41

    【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 | 经纬度与实际距离换算 | 相关代码实现 )

    垂直 y 轴 的坐标 , 纬度的取值范围 -90 度 ~ + 90 度 ; 西经 和 南纬 是负数 ; 经度使用 W ( 东经 ) 和 E ( 西经 ) 表示 , 纬度 使用 N ( 北纬 ) 和...) , Lat1 是 坐标点一 纬度 , Lng1 是 经度 ; ( Lat2 , Lng2 ) , Lat2 是 坐标点一 纬度 , Lng2 是 经度 ; a = Lat1 - Lat2..., 是 两个坐标点的 纬度之差 ; b = Lng1 - Lng2 , 是 两个坐标点的 经度之差 ; 地球半径为 6378.137 千米 ; 使用代码实现上述逻辑 : public...1 米对应经度 经度 ( 东西方向 ) 上 1 米 , 对应的度数是由当前的纬度决定的 ; 不同的 纬度 上 , 纬线 ( 东西方向 ) 的周长不一样 ; 赤道上 1 米对应的经度计算 : 赤道上 纬度为..., 对应的度数是固定的 ; 值为 360° / 40030173 = 0.00000899° 3、实际距离与经纬度换算 1 度经度对应东西距离 1 度经度对应东西距离 : 赤道位置的公式为 : \

    6.5K20

    GIS数据漫谈(三)

    经纬度赤道把地球分为了北半球和南半球,与赤道平行的线就是纬线。赤道是最大的纬圈,由此向北或向南,纬圈半径递减。赤道纬度为 0°,由赤道向两级各分为90°。北半球的称为北纬,南半球的称为南纬。...经度值在本初子午线以东为正,以西为负。纬度值以北半球为正,南半球为负,比如:地理学上东西半球分界线并不是本初子午线,而是东经160度和与其相对的西经20度所组成的经线圈。...在实际应用中经纬度哪个在前哪个在后没有统一的标准,比如:在腾讯地图的网站上拾取的坐标,是纬度在前,经度在后。在我们 ThingJS API 里如果是以数组的形式输入经纬度,则顺序为 [经度,纬度]。...经度、纬度在软件系统的各种字段中经常简写为lon、lat或lng、lat,如下图:认识经纬度是成功的第一步,那问题来了:为什么有时候经纬度填对了结果还和底图(瓦片图)对不上?...• 低代码ThingJS是纯H5的WebGL架构,可在各类主流网页浏览器中自如运行,包括可在移动端直接访问运行。• 低代码ThingJS提供全生命周期的开发组件,大大提升数字孪生可视化项目开发效率。

    1.8K20

    Geohash介绍及针对具体需求的改良

    Geohash算法     地图上一般是使用经度和纬度两个维度来唯一的确定一个点,而geohash采用经纬度二维值转为一维的值。    ...定制经纬度范围     标准的geohash算法的经度范围是(-180,180),纬度范围为(-90,90),这个范围是适用于全球的地理位置的。...减少计算的次数提高性能 降低geohash有效值的位数 自定义经纬度范围可选定一个趋于正方形的范围,当计算结果为一个圆形区域,这样能更好的和圆契合。    ...可选定经纬度范围, 经度(70, 140),纬度(15, 60)。 2.2. ...我的需求对应区域的大小控制需要更精确,我希望我通过缩短geohash一位不至于导致区域增大过快,所以我这里采用geohash的二进制转成64位long型值作为geohash值。高位为有效位,低位补0。

    2K100
    领券