时间:2021-05-24
根据圆周率和地球半径系数以及搜寻点的经纬度,搜寻数据表中与搜寻点之间的距离为N公里内的数据。
1、创建测试表
CREATE TABLE `location` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `longitude` decimal(13,10) NOT NULL, `latitude` decimal(13,10) NOT NULL, PRIMARY KEY (`id`), KEY `long_lat_index` (`longitude`,`latitude`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;2、插入测试数据
insert into location(name,longitude,latitude) values('广州东站',113.332264,23.156206),('林和西',113.330611,23.147234),('天平架',113.328095,23.165376);mysql> select * from `location`;+----+--------------+----------------+---------------+| id | name | longitude | latitude |+----+--------------+----------------+---------------+| 1 | 广州东站 | 113.3322640000 | 23.1562060000 || 2 | 林和西 | 113.3306110000 | 23.1472340000 || 3 | 天平架 | 113.3280950000 | 23.1653760000 |+----+--------------+----------------+---------------+3、搜寻1公里内的数据
搜寻点坐标:时代广场 113.323568, 23.146436
6370.996公里为地球的半径
计算球面两点坐标距离公式
C = sin(MLatA)sin(MLatB)cos(MLonA-MLonB) + cos(MLatA)cos(MLatB) Distance = RArccos(C)*Pi180根据计算公式得到查询语句如下:
select * from `location` where (acos(sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + cos(([#latitude#]*3.1415)/180) * cos((latitude*3.1415)/180) * cos(([#longitude#]*3.1415)/180 - (longitude*3.1415)/180))*6370.996)<=1;执行查询:
mysql> select * from `location` where ( -> acos( -> sin((23.146436*3.1415)/180) * sin((latitude*3.1415)/180) + -> cos((23.146436*3.1415)/180) * cos((latitude*3.1415)/180) * cos((113.323568*3.1415)/180 - (longitude*3.1415)/180) -> )*6370.996 -> )<=1;+----+-----------+----------------+---------------+| id | name | longitude | latitude |+----+-----------+----------------+---------------+| 2 | 林和西 | 113.3306110000 | 23.1472340000 |+----+-----------+----------------+---------------+以上这篇mysql 搜寻附近N公里内数据的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
近日,从信息人士处获知,大润发超市店面的淘鲜达服务项目派送范畴已从3公里全方位拓展至5公里。住在大润发超市店面附近5公里内的客户,都将能够根据手机版淘宝“淘鲜达
简单意义上的桶排序:桶排序的原理是先安排N+1个桶作为容器,若数据范围为N的话。然后将测试数据(所需排序的数据)进行循环,放入对应的桶内。数据一定是在范围N内的
MySQL表子查询表子查询是指子查询返回的结果集是N行N列的一个表数据。MySQL表子查询实例下面是用于例子的两张原始数据表:article表:blog表:SQ
MySQL数据库source命令详解及实例MySQL数据库source命令,该命令是数据库导入命令。source命令的用法非常简单,首先你需要进入MySQL数据
小程序开发优势: 1、小程序自带线上推广功能 附近小程序是小程序自带的功能。小程序开通后,5公里范围内的小程序用户能通过附近小程序找到商家有效减少了商家打广