热门标签: 转载 JavaScript mysql 学习 php
主页> 数据库 >

SQL计算定位距离

发布时间:2021-05-17 编辑:三石兄 标签: mysql 热度:222

通能经纬度在mysql查询的时候计算出两地距离

使用场景

项目中,经常遇到定位问题,
例如: 距离我最近的门店!我到两家店距离分别是多少?

思路

使用坐标的原因有两个,
	1它可以模拟经纬度,其实经纬度就是坐标点
	2他可以确定,在与x轴或y轴平行的两点间的距离
使用三角形的原因
	直角三角形,知道两条直角边,可计算出斜边的长度

开始表演

– 场景
真实业务场景,我位置在中冶祥腾购物商场,我距离南翔地铁站,与南翔家乐福,距离分别是多少
在这里插入图片描述

31.2971446391,121.3234376907 -- 南翔地铁站
31.2989781465,121.3255405426 -- 南翔家乐福
31.2955677941,121.3221502304 -- 当前位置(中冶祥腾购物)123

– 表


CREATE TABLE store (
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(10) DEFAULT NULL,
longitude double DEFAULT NULL,
latitude double DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;


– 数据


在这里插入图片描述


– 查询


– 按照三角函数公式

SELECT id,`name`,CEILING(SQRT(((longitude-31.2955677941)*(longitude-31.2955677941))+((latitude-121.3221502304)*(latitude-121.3221502304)))*100000) AS 距离我__m FROM store;

– 使用mysql平方函数,开根号函数
– 公式:

SELECT id,`name`,CEILING(SQRT(POWER(存入的经度-输入的经度,2)+POWER(存入的维度-输入的维度,2))*100000) 距离我__m FROM c_store;

– 实际查询sql:

SELECT id,`name`,CEILING(SQRT(POWER(longitude-31.2955677941,2)+POWER(latitude-121.3221502304,2))*100000) AS 距离我__m FROM store;

– 测试结果: 明显我距离地铁站比较近,距离家乐福比较远,测试正确,距离差不多


在这里插入图片描述


结束!

本文章转载自 https://blog.csdn.net/t_jindao/article/details/8529294

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

Copyright © 2017-2020 三石兄博客 & 版权所有

蜀ICP备17023832号

195721