Mysql空间如何搜GeoHash

  

不知道大家之前对类似Mysql空间如何搜GeoHash的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完Mysql空间如何搜GeoHash你一定会有所收获的。

应用场景介绍:

,,,,公司新业务的需求,希望能够实现当前位置快速显示共享信息数据,针对5.7新特性的支持度调研,利用GeoHash封装成内置数据库函数的简易方案,实现前期的初期业务。

实现过程:

,1,构建表

,,,,创建表“通州”(

,,,,,“id”INT (11) NOT NULL AUTO_INCREMENT

,,,,,的cname VARCHAR(255)核对utf8mb4_unicode_ci默认为空,

,,,,,“关节”点不是NULL,

,,,,,主键(id),

,,,,,空间的关键“sp_index”(关节)

,,,,)引擎=INNODB AUTO_INCREMENT=1的默认字符集=utf8mb4整理=utf8mb4_unicode_ci

,2、构造简单数据,,

,,,,插入“通州”(cname,关节)值(& # 39;景欣园& # 39;,GEOMFROMTEXT(& # 39;点(39.8885917679 - 116.6576038966)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;京通罗斯福广场& # 39;,GEOMFROMTEXT(& # 39;点(39.8890214887 - 116.6473661241)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;中国北京市北京市通州区& # 39;,GEOMFROMTEXT(& # 39;点(39.8898670523 - 116.6566729546)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;中国北京市北京市通州区& # 39;,GEOMFROMTEXT(& # 39;点(39.8883852752 - 116.655728817)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;杨庄路22号院& # 39;,GEOMFROMTEXT(& # 39;点(39.8984936518 - 116.6339063644)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;中国北京市北京市朝阳区& # 39;,GEOMFROMTEXT(& # 39;点(39.8975388526 - 116.613779068)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;北京市朝阳区第三医院约31米& # 39;,GEOMFROMTEXT(& # 39;点(39.8873809413 - 116.603307724)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;双桥温泉北里小区& # 39;,GEOMFROMTEXT(& # 39;点(39.8918427053 - 116.6076636314)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;京客隆配送中心& # 39;,GEOMFROMTEXT(& # 39;点(39.8916616061 - 116.5908622742)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;世纪宾馆& # 39;,GEOMFROMTEXT(& # 39;点(39.8918591688 - 116.6024065018)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;双桥六号井小区——北区约48米& # 39;,GEOMFROMTEXT(& # 39;点(39.8899164443 - 116.6050457954)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;翠屏里小区约190米& # 39;,GEOMFROMTEXT(& # 39;点(39.8883194176 - 116.6495060921)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;京通罗斯福广场& # 39;,GEOMFROMTEXT(& # 39;点(39.8894719148 - 116.6584646702)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;生活新生活广场约87米& # 39;,GEOMFROMTEXT(& # 39;点(39.8895542353 - 116.65579319)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;生活新生活广场约74米& # 39;,GEOMFROMTEXT(& # 39;点(39.8896242077 - 116.6568982601)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;生活新生活广场& # 39;,GEOMFROMTEXT(& # 39;点(39.8901428239 - 116.6564154625)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;漫春园& # 39;,GEOMFROMTEXT(& # 39;点(39.8913364496 - 116.658115983)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;7天连锁酒店(北京通州果园环岛店)约58米& # 39;,GEOMFROMTEXT(& # 39;点(39.8915998677 - 116.6560935974)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;北京金松宾馆约77米& # 39;,GEOMFROMTEXT(& # 39;点(39.9036172391 - 116.6577833891)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;新华南路小区——东区约32米& # 39;,GEOMFROMTEXT(& # 39;点(39.9034444015 - 116.6588240862)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;红旗小区约61米& # 39;,GEOMFROMTEXT(& # 39;点(39.9046707164 - 116.6598540545)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;祥云天地家园约62米& # 39;,GEOMFROMTEXT(& # 39;点(39.9067899674 - 116.659129858)& # 39;));

,,插入“通州”(cname,关节)值(& # 39;梨园地铁站约40米& # 39;,GEOMFROMTEXT(& # 39;点(39.8832975966 - 116.6687965393)& # 39;));


,3、搜索当前1公里范围内的位置信息

,,,,设置@jl=1;,//多少公里范围内的

,,,,设置@jd=118.1964111328;

,,,,设置@wd=39.5591182422;,//当前的位置信息

,,,,关节是实际已经存在的经纬度信息

,,,,, SELECT *, ASTEXT(关节),通州哪里,MBRCONTAINS (LINESTRING(点(@wd + @jl/(111.12/COS(弧度(@jd))),,

,,,, @jd + @jl/111.12,),,

,,,,,点(@wd - @jl/(111.12/COS(弧度(@jd))), @jd - @jl/111.12),),关节),

,,# # #经纬弧度(1°纬度=111.12公里)即10/111.12,表示查找附近10公里。

Mysql空间如何搜GeoHash