mysql距离函数st_distance

mysql距离函数st_distance
随着近⼏年各类移动终端的迅速普及,在⼿机移动定位app中,附近的⼈,附近的地点功能⼗分常见,基于地理位置的服务(LBS)和相关应⽤也越来越多,⽽⽀撑这些应⽤的最基础技术之⼀,就是基于地理位置信息的处理。
st_distance 函数
st_distance 函数是从mysql5.6.1才加⼊的。
SET @g1 = POINT(1,1), @g2 = POINT(2,2);
select st_distance (@g1, @g2);垃圾热解气化炉
输出结果:1.4142135623730951
SELECT st_distance (point (1, 1),point(2,2) ) * 111195
//输出结果:157253.47706807632 单位:⽶
st_distance 计算的结果单位是度,需要乘111195(地球半径6371000*PI/180)是将值转化为⽶。
当然你也可以⾃定义距离函数:
CREATE FUNCTION slc (
lat1 DOUBLE,
lon1 DOUBLE,
lat2 DOUBLE,
lon2 DOUBLE
) RETURNS DOUBLE RETURN 6371 * acos(
cos(radians(lat1)) * cos(radians(lat2)) * cos(
radians(lon2) - radians(lon1)
) + sin(radians(lat1)) * sin(radians(lat2))
);
磨球
SELECT slc(1,1,2,2) from DUAL
//输出结果:157.22543203804852 km
伪随机数应⽤场景:
智慧杀虫灯
假设我当时的坐标:117.069,35.86 需要查询我附近50KM内服务区,并按照距离由近及远排列
SELECT
s.id,s.name,s.lng,s.lat,
(st_distance (point (lng, lat),point(117.069,35.86) ) *111195) AS distance
FROM
防尘接线盒road_servicearea s
HAVING distance<50
ORDER BY distance
容器景何
知识科普:
地球是在不停地绕地轴旋转,在地球中腰画⼀个与地轴垂直的⼤圆圈,使圈上的每⼀点都和南北两极的距离相等,这个圆圈就叫作“⾚道”。在⾚道的南北两边,画出许多和⾚道平⾏的圆圈,就是“纬圈”;构成这些圆圈的线段,叫做纬线。我们把⾚道定为纬度零度,向南向北各为90度,在⾚道以南的叫南纬,在⾚道以北的叫北纬。北极就是北纬90度,南极就是南纬90度。纬度的⾼低也标志着⽓候的冷热,如⾚道和低纬度地地区⽆冬,两极和⾼纬度地区⽆夏,中纬度地区四季分明。
从北极点到南极点,可以画出许多南北⽅向的与地球⾚道垂直的⼤圆圈,这叫作“经圈”;构成这些圆圈的线段,就叫经线。公元1884平⾯坐标图年,国际上规定以通过英国伦敦近郊的格林尼治天⽂台的经线作为计算经度的起点,即经度零度零分零秒,也称“本初⼦午线”。在它东⾯的为东经,共180度;
在它西⾯的为西经,共180度。因为地球是圆的,所以东经180度和西经180度的经线是同⼀条经线。各国公定180度经线为“国际⽇期变更线”。为了避免同⼀地区使⽤两个不同的⽇期,国际⽇期变线在遇陆地时略有偏离。每⼀经度和纬度还可以再细分为60分,每⼀分再分为60秒以及秒的⼩数。利⽤经纬线,我们就可以确定地球上每⼀个地⽅的具体位置,并且把它在地图或地球仪上表⽰出来。

本文发布于:2024-09-25 19:17:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/180608.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:圆圈   距离   地区
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议