首页
学习
活动
专区
圈层
工具
发布

空间索引-geohash算法实现

算法简介 geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等 算法基本原理 geohash算法将地球理解为一个二维平面,将平面递归分解成更小的子块...),这5bits可以有32中不同的组合(0~31),这样我们可以将整个地图区域分为32个区域,通过00000 ~ 11111来标识这32个区域。...$limit_1:$limit_0);     } } 由此,纬度24.88849可得字符串为10100011011001011001 经度118.6197800000,经度分为东经和西经,区间为[-...当需要查询附近某个区域块点时,只需要,就可以查出该区域块所有数据 select * from dm_gps where geohash like "wskme%" (记得加索引) 用法补充: 当碰到需要渲染一整个地图...总不可能把几千万的点全部查出来渲染吧? 可以新增一个大区域块统计表,将精度更小的数据进行分组并且统计总数,例如: ? gps_id无用字段,请忽略 查出精度为2的数据: ?

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

    根据两点的经纬度计算距离_经纬度两点距离

    每一经度和纬度还可以再细分为60分,每一分再分为60秒以及秒的小数。利用经纬线,我们就可以确定地球上每一个地方的具体位置,并且把它在地图或地球仪上表示出来。 例如问北京的经纬度是多少?...经度和纬度都是一种角度。经度是个两面角,是两个经线平面的夹角。...GPS车友可以用上述方法换算成自己需要的单位坐标。 ##经纬度换算成米 纬度分为60分,每一分再分为60秒以及秒的小数。 纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。...有相同特定纬度的所有位置都在同一个纬线上。 赤道的纬度为0°,将行星平分为南半球和北半球。 纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。...设第一点A的经 纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90

    2.8K20

    Redis GeoHash核心原理解析

    但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题。...GeoHash算法的步骤 下面以北海公园附近随便一个位置为例介绍GeoHash算法的计算步骤,先用百度 GPS反定位系统查找看下经纬度。 ? 纬度=116.395371,经度=39.931957。...为什么分别给经度和维度编码?为什么需要将经纬度两串编码交叉组合成一串编码?本节试图回答这一问题。...临界问题 由于GeoHash是将区域划分为一个个规则矩形,并对每个矩形进行编码,这样在查询附近POI信息时会导致以下问题,比如红色的点是我们的位置,绿色的两个点分别是附近的两个餐馆,但是在查询的时候会发现距离较远餐馆的...每个POI都有经纬度信息,用图1b的SQL语句在mySQL中建立了POI_spatial的表,其中lat和lng两个字段来代表纬度和经度。为后续分析方便起见,我人造了40万个POI数据。

    1.8K20

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

    3 编 写 脚 本 整个操作分为 3 步骤,分别是获取图片的经度和纬度、对经度和纬度进行数据矫正、调用高德逆地理编码 API 获取具体位置。 第 1 步,获取图片的「经度和纬度」。...使用 exifread 库可以直接读取图片文件,获取到图片的元数据,包含经度、纬度、南北纬方向、东西经方向和拍摄时间。...[ GPS GPSLatitudeRef ] # 经度数 longitude_gps = img_exif[ GPS GPSLongitude ] # E,W 东西经方向...因为通过 GPS 获取的经度、纬度和高德地图的坐标存在一定的误差,这里需要把坐标转换为「火星坐标系」。...def __format_lati_long_data(self, data): """ 对经度和纬度数据做处理,保留6位小数 :param data: 原始经度和纬度值

    1.4K20

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

    03 编写脚本 整个操作分为 3 步骤,分别是获取图片的经度和纬度、对经度和纬度进行数据矫正、调用高德逆地理编码 API 获取具体位置。 第 1 步,获取图片的「经度和纬度」。...使用 exifread 库可以直接读取图片文件,获取到图片的元数据,包含经度、纬度、南北纬方向、东西经方向和拍摄时间。...['GPS GPSLatitudeRef'] # 经度数 longitude_gps = img_exif['GPS GPSLongitude'] # E,W 东西经方向...因为通过 GPS 获取的经度、纬度和高德地图的坐标存在一定的误差,这里需要把坐标转换为「火星坐标系」。...def __format_lati_long_data(self, data): """ 对经度和纬度数据做处理,保留6位小数 :param data: 原始经度和纬度值

    2.2K71

    GPS数据包格式+数据解析

    从7.5°E与7.5°W分别向东、向西每15°经度划分为一个时区,直到东11区和西11区。东11区最东部的经度是172.5°E,由172.5°E——180°之间就是东12区。...西11区最西部的经度是172.5°W,由172.5°W——180°之间就是西12区。东、西12区各占经度7.5°,合成一个完整的时区,即全球总共划分为24个时区。...南北纬,这个位有两种值‘N’(北纬)和‘S’(南纬) 5. 经度的计算方法和纬度的计算方法一样 6....是串口接收的一行数据buf GetComma函数作用是一行数据中第几个逗号后面那个字符在这行数据中的位置 Get_Double_Number函数作用是把给定字符串第一个逗号之前的字符转化成双精度型,在这里就是把代表经度和纬度的字符串转换成数字...,同样的函数还有Get_Float_Number UTC2BTC函数是将世界时间转换成北京时间(相差8小时) 在LCD显示程序中把GPS_INFO结构体的已经被赋值的变量显示到屏上相应的位置即可 还有一个

    5.7K10

    卫星定位模块的信息解析及使用

    我们可以看到每一行数据各不相同,但大制可以分为语句标识符和具体信息,每条信息用$开头。...可分为具体17个字段: 标识符,UTC时间,纬度,纬度半球,经度,经度半球,定位指示,卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和,结束标记...所以这个数据可以解析为,UTC时间06:33:27.094 位置信息为:3352.18138,N,11528.75505,E 时间格式为先是纬度,再是经度,中间用逗号隔开并且用位置的首字母来区分是北纬还是南纬...,东经还是西经,和经纬度也用逗号隔开。...经纬度的具体度数的格式为小数点前两位以前为度,后面为分 以这个数据可以解析为,位置,北纬33度52.18138分,东经115度28.75505 剩余信息根据手册进行使用,对日常的开发用处较少,下面将GGA

    2.1K30

    图片之EXIF信息提取与处理利用

    、型号、色彩编码、拍摄时录制的声音以及GPS全球定位系统数据、缩略图和其他信息。...GPSLatitudeRef : N #纬度 GPS GPSLatitude : [28, 53, 201/10] #需要进行转码 GPS GPSLongitudeRef : E #经度...,计算两点位置的距离,返回两点的距离,单位米,该公式为GOOGLE提供,误差小于0.2米 #地球半径单位米 : private const double EARTH_RADIUS = 6378137;...地址纬度 double radLng1 = Rad(lng1); #第二个GPS地址经度 double radLat2 = Rad(lat2); double radLng2 =...弧度,近似值为0.01745弧度. # 2、经纬度的定义:纬度是以赤道为0度,经度是以英国伦敦附近的格林尼治天文台为0度. # 3、换算:经纬度的度数/360=弧度/2π(3.14) # 说明:经纬度前面的英文字母代表

    5.4K11

    神奇的Python图片处理库exifread

    原理是: 先把图片以二进制的格式读取出来,然后通过 exifread 库把里面的 GPS 信息提取出来,再以特定的格式打印出来,最后直接复制里面的经纬度信息,在支持通过经纬度来查位置的地图里一查就能定位到了.../int(match_result[3])) except: GPS['纬度'] = str(value) # 获取纬度信息 elif re.match...[1])) + " " + str(int(match_result[2])/int(match_result[3])) except: GPS['经度'] =...['纬度'] + "," + GPS['经度']) print("拍摄时间:" + Data) 如图所示,读取后的纬经度信息直接就显示出来了 ?...如果想保密的话,直接点击删除属性和个人信息就能能把信息删掉。 ? PS:如果觉得分享内容有一些帮助,欢迎大家随手分享、点赞、在看。

    1.2K10

    Geohash算法原理及实现

    Geohash算法就是将经纬度编码,将二维变一维,给地址位置分区的一种算法。 经纬度常识 经线是纵的,经度是横的,用于表示不同的经线,纬线是横的,纬度是纵的,用于表示不同的纬线,如下图 ? ?...纬线:地球仪上的横线,lat,赤道是最大的纬线,从赤道开始分为北纬和南纬,都是0-90°,纬线是角度数值,并不是米; 经线:地球仪上的竖线,lng,子午线为0°,分为西经和东经,都是0-180°,经线也是角度数值...; 经纬线和米的换算:经度或者纬度0.00001度,约等于1米,这个在GPS测算距离的时候可以体会到,GPS只要精确到小数点后五位,就是10米范围内的精度 经度0度的位置为本初子午线,在180度的位置转为西经...GeoHash用一个字符串表示经度和纬度两个坐标。...但因为黄点的编码和红点一样,最终找到的将是黄点。这就有问题了。 要解决这个问题,很简单,只要再查找周边8个区域内的点,看哪个离自己更近即可。 另外就是曲线突变问题。

    2.2K20

    GPS数据格式转换

    经纬度格式分为三种:度、 度–分、 度–分–秒 1.)ddd.ddddd °【度.度 格式】的十进制小数部分(5位) 2.)ddd°mm.mmm’ 【度分.分 格式】的十进制小数部分(3位) NMEA...数据格式为$GPGGA时,得到gps数据为(度分.分)格式 3.) ddd°mm’ss’’ 【度.分.秒 格式】 Google 使用的是第三种格式 度。...分’秒’’ 度分转换: 将度分单位数据转换为度单位数据 度=度+分/60 例如: 经度 = 116°20.12’ 纬度 = 39°12.34’...经度 = 116 + 20.12 / 60 = 116.33533° 纬度 = 39 + 12.34 / 60 = 39.20567° 度分秒转换: 将度分秒单位数据转换为度单位数据...度=度+分/60 +秒/60/60 例如: 经度 = 116°20’43” 纬度 = 39°12’37” 经度 = 116 + 20 / 60 +

    2.6K40

    Java【代码 04】坐标系说明+WGS84GCJ02BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)

    其中地理坐标系又可分为参心坐标系和地心坐标系,常见的参心坐标系北京54、西安80,常见的地心坐标系有WGS84、GCJ02、BD09、GCS2000。...一般通过 GPS 记录仪记录下来的经纬度,就是基于 WGS84 坐标系的数据。...Google 和高德地图定位的的经纬度(国外)都是基于WGS84坐标系的;但是在国内是不允许直接用 WGS84 坐标系标注的,必须经过加密后才能使用。...因为 GPS 得到的经纬度直接在 GCJ02 坐标系下会定位到错误的地点,有种到了火星的感觉,因此在坊间也将 GCJ-02 戏称为火星坐标系。...GPS经纬度是39°54'26.2"N 116°23'28.4"E,转化为度的单位就是39.907270 116.391213(小数部分 = 分 / 60 + 秒 / 3600)2.

    18810

    百度Apollo源码学习之定位系统介绍

    image.png 这个分为三个,1个主要控制站,1个备用控制站,11个地面的天线,16个地面的监测站。主要用于跟踪,监测,接收和传输一些数据和命令。...GPS GPS是70年代规划,80年代实施,90年代运营,耗资300亿美元,仅次于阿波罗登月计划和航天飞机计划的美国第三大航天工程。...ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经)...,格式为ddmm.mmmm(第一位是零也将传送); 纬度半球,N 或S(北纬或南纬) 经度,格式为dddmm.mmmm(第一位零也将传送); 经度半球,E 或W(东经或西经) 将传送)。

    1.2K30

    经纬度转换-----度分秒以及经纬度和米

    GPS车友可以用上述方法换算成自己需要的单位坐标。 经纬度换算成米 纬度分为60分,每一分再分为60秒以及秒的小数。 纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。...有相同特定纬度的所有位置都在同一个纬线上。  赤道的纬度为0°,将行星平分为南半球和北半球。  纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。...位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。...平均: 纬度1度 = 大约111km  纬度1分 = 大约1.85km  纬度1秒 = 大约30.9m  所以:经度120.00001,精确的距离计算方式是:先进0.00001*111*1000=1.11m...其中 R为地球半径,可取平均值 6371km; φ1, φ2 表示两点的纬度; Δλ 表示两点经度的差值。

    12.5K70

    GPS坐标转换成百度坐标-如何解析json返回值

    一、背景 公司碰到了一个数据迁移业务,就是把客户平台的GPS坐标迁移到自己平台,自己平台使用的是百度坐标,这就需要转换了,我是将客户公司的gps经纬度字段以及主键id导出为csv文件,这个...csv文件每行三个字段,写一个脚本读取csv文件,根据每行拿到的GPS经纬度请求百度坐标转换接口,获取返回的百度经纬度,生成一个每行五个字段的csv文件,即(id,GPS经度,GPS纬度,百度经度,百度纬度...)五个字段,将生成的csv文件导入自己平台数据库生成临时文件,写sql刷新自己的数据的百度经纬度字段。...,组成包括(id,GPS经度,GPS纬度,百度经度,百度纬度)五个字段的bean加入到集合中,方便后续写入新的csv文件。...经度,GPS纬度,百度经度,百度纬度)五个字段,见注释。

    1.1K30

    明白了这些术语,才算懂个“球”

    从0°经线的位置向东转过的角度就是经度,范围从-180°到180°。西边为负,东边为正。 从赤道向北转过的角度就是纬度,范围从-90°到90°。北半球为正,南半球为负。 ?...本初子午线和赤道的交点为坐标零点,X轴向东为正,Y轴向北为正。...再看一下大地坐标(经纬度表示法)的范围,经度的范围是[-180,180],这个没问题,把Y坐标反算成纬度,可以得到纬度范围为 [-85.05, 85.05]。 北极南极显示得不全?没事,企鹅们不在乎。...为了减少投影变形,高斯-克吕格投影分为3°带和6°带投影。 ? 图片取自网络 以6度分带为例,水平方向从-180度到180度,共分为60个带。...它是等角横轴割圆柱投影,圆柱割地球于南纬80度、北纬84度两条等高圈,将地球划分为60个投影带,每带经差为6度,与六分带的高斯克吕格投影非常相像,容易搞混。

    2.1K20
    领券