当前位置:首页 » 编程语言 » sql根据经纬度计算距离
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql根据经纬度计算距离

发布时间: 2022-04-29 07:19:30

⑴ mysql中怎么根据经纬度计算距离

DROP FUNCTION IF EXISTS func_calcDistance ;
CREATE FUNCTION func_calcDistance(
origLng DECIMAL(20,6), -- 目的地经度
origLat DECIMAL(20,6), -- 目的地纬度
longitude DECIMAL(20,6), -- 当前所在地点经度
latitude DECIMAL(20,6) -- 当前所在地点纬度
)
RETURNS DOUBLE
BEGIN
DECLARE result DOUBLE DEFAULT 0;
SET result = round(6378.138*2*asin(sqrt(pow(sin(
(origLat*pi()/180-latitude*pi()/180)/2),2)+cos(origLat*pi()/180)*cos(latitude*pi()/180)*
pow(sin( (origLng*pi()/180-longitude*pi()/180)/2),2)))*1000);
RETURN result;
END ;

⑵ 怎么知道经纬度算距离,

北京纬度为39°54′N,马来西亚纬度为1°22′N,则两地纬度差为38°32′,根据纬度相差1度,纬度1秒的长度,地球的子午线总长度大约40008km。

平均:纬度1度 = 大约111km;纬度1分= 大约1.85km;纬度1秒= 大约30.8m。那么距离相差111km的规律,计算得两地南北距离为4281km。

经度分为360度,每15度1个时区,其中0度的叫本初子午线,是第一个进入新一天的地方,然后向西每过1个时区就相差1小时。

例如是早上5点,那么向西一个时区就是早上4点,再过1个时区就是早上3点,依此类推,向东则相反,一直到本初子午线,也就是说本初子午线两侧刚好相差23个小时,从赤道向两级,纬度越来越高。赤道是划分南北两半球的分界线。

经纬度1度=60分=3600秒,这个六十进制是古巴比伦人定制的,我们今天仍然在使用,只要关于角度和圆都是一样。

赤道的纬度为0°,将行星平分为南半球和北半球。纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。

纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。赤道、南回归线、北回归线、南极圈和北极圈是特殊的纬线。

(2)sql根据经纬度计算距离扩展阅读:

经纬度计算方法

在地球上任何地点,只要有只表,有根竹竿,一根卷尺,就可知道当地经纬度。但表必须与该国标准时校对。

方法如下:

1、先算两分日

比如在中国某地,杆影最短时是中午13点20分,且杆长与影长之比为1,则可知该地是北纬45°(tgα=1),东经100°(从120°里1小时减15°,4分钟减1°)杆长与影长之比需查表求α,这里用了特殊角。

2、再算两至日经度的算法不变 纬度在北半球冬至α+23.5°,夏至α-23.5°在任意一天加减修正值即可。

3、修正值算法:就是距两分或两至日的天数差乘以94/365. 比如2013年2月17日,2013年3月22日春分差33天,即太阳直射点在南纬

33×94/365=8.5°

所以今天正午时得到的纬度是(arctgα+8.5)°

tgα= 杆长/影长

参考资料来源:网络-经纬度

⑶ oracle 根据已知的点的经纬度查询数据中距离该点500米的经纬度点,用sql怎么查呢

猜猜你的数据库列大致的格式为:经度,纬度,餐厅。 。 。 估计经纬度应该有精确的控制,你可以根据需要设置查询 1。矩形(简单):减去经度,纬度和一个固定值的减法运算的一个固定值,条件是在这个范围内 2设置。圆(复杂):经度和平方和的平方根的纬度,条件设置 在此范围内的数据库的估计要大,所以输出音量加一个限制是必要 SQL,甲骨文 SELECT TOP 10 *从'表名,其中
选择*从

限M,N,其中
>从一开始就M,取n个

⑷ sql语句怎么写算坐标经纬度之间的距离

declare @x1 float
declare @x2 float
declare @y1 float
declare @y2 float
set @x1 = 5
set @x2 = 10
set @y1 = 5
set @y2 = 10
select power(power((@x1-@x2),2)+power((@y1-@y2),2),0.5)

⑸ 如何计算经纬度之间的距离

计算经纬度之间的距离方法如下:

计算地球上经纬度之间的距离d,已知地球上两点的经度、纬度:(X1,Y1), (X2,Y2),其中X1,X2为经度,Y1,Y2为纬度;

视计算程序需要转化为弧度(*3.1415926/180)地球半径为R=6371.0 km,则两点距离d=R*arcos[cos(Y1)*cos(Y2)*cos(X1-X2)+sin(Y1)*sin(Y2)]。

假设在中国某地,杆影最短时是中午13点20分,且杆长与影长之比为1,则可知该地是北纬45°(tgα=1),东经100°(从120°里1小时减15°,4分钟减1°)杆长与影长之比需查表求α。再算两至日经度的算法不变 纬度在北半球冬至α+23.5°,夏至α-23.5°在任意一天加减修正值即可。

(5)sql根据经纬度计算距离扩展阅读

经纬分度:

经度分为360度,每15度1个时区,其中0度的叫本初子午线,是第一个进入新一天的地方,然后向西每过1个时区就相差1小时。例如是早上5点,那么向西一个时区就是早上4点,再过1个时区就是早上3点,依此类推,向东则相反,一直到本初子午线。

纬度赤道的纬度为0°,将行星平分为南半球和北半球。纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。

纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。

⑹ 怎样计算两个经纬度之间的距离 百度百科

地球赤道上环绕地球一周走一圈共 40075.04公里,而一圈分成360°,每1°(度)有60'。每一度一秒在赤道上的长度计算如下:

40075.04km/360°=111.31955km

111.31955km/60'=1.8553258km=1855.3m

每一分又有60秒,每一秒就代表 1855.3m/60=30.92m,任意两点距离计算公式为:

d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]}(A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离)。

地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里。


(6)sql根据经纬度计算距离扩展阅读:

在地球仪上,由经线和纬线就组成了经纬网;如果把经纬网地球仪展开,就形成了一幅平面的地图。确定位置,在航空、航天、航海以及气象等方面都有作用。“船在海上遇到危险时,如何去营救”等等,都要用到经纬网地图。

经度 :为了区分地球上的每一条经线,人们给经线标注了度数,这就是经度。经度每15度1个时区。 实际上经度是两条经线所在平面之间的夹角。国际上规定,把通过英国首都伦敦格林威治天文台原址的那一条经线定为0°经线,也叫本初子午线。

从0°经线算起,向东、向西各分作180°,以东的180°属于东经,习惯上用“E”作代号,以西的180°属于西经,习惯上用“W”作代号。东经180°和西经的180°重合在一条经线上,那就是东西180°经线。纬度:从赤道向北量度为“北纬”(N);向南量度为“南纬”(S)。

在地图上判读经度时应注意:从西向东,经度的度数由小到大为东经度;从西向东,经度的度数由大到小,为西经度;除0°和180°经线外,其余经线都能准确区分是东经度还是西经度

⑺ sql语句怎么写算坐标经纬度之间的距离我是mysql数据库。 请详细点!谢谢!

这单用SQL语句是办不到的吧
应该先把坐标从数据库中取出,再用三角函数计算。
或者在存入数据库之前,先把距离计算出来,一并存入。

⑻ sql怎么将一系列点经纬度坐标匹配到某市

ORACLE获取数据,根据定位的数据,计算用户的经纬度。
根据经纬度计算地球上两点之间的距离的SqlServer函数,单位是千米。mysql距离计算,单位m,以及排序lon经度,lat纬度,一般地图上显示的坐标顺序为,纬度在前(范围-90~90),经度在后(范围-180~180),首先新建一张表,里面包含经纬度。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

⑼ 如何根据经纬度计算两地间的距离

1、地球赤道上环绕地球一周走一圈共40075.04公里,而@一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的长度计算如下:

40075.04km/360°=111.31955km

111.31955km/60=1.8553258km=1855.3m

而每一分又有60秒,每一秒就代表1855.3m/60=30.92m

任意两点距离计算公式为

d=111.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]}

其中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。

2、分为3步计算:

第1步 分别将两点经纬度转换为三维直角坐标:

假设地球球心为三维直角坐标系的原点,球心与赤道上0经度点的连线为X轴,球心与赤道上东经90度点的连线为Y轴,球心与北极点的连线为Z轴,则地面上点的直角坐标与其经纬度的关系为:

x=R×cosα×cosβ

y=R×cosα×sinβ

z=R×sinα

R为地球半径,约等于6400km;

α为纬度,北纬取+,南纬取-;

β为经度,东经取+,西经取-。

第2步 根据直角坐标求两点间的直线距离(即弦长):

如果两点的直角坐标分别为(x1,y1,z1)和(x2,y2,z2),则它们之间的直线距离为: L=[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2]^0.5

上式为三维勾股定理,L为直线距离。

第3步 根据弦长求两点间的距离(即弧长):

由平面几何知识可知弧长与弦长的关系为:

S=R×π×2[arc sin(0.5L/R)]/180

上式中角的单位为度,1度=π/180弧度,S为弧长。

3、1度的实际长度是111公里。但纬线的距离会越考两端越小,他的距离就会变成111乘COS纬度数,经度不变。

4、南北方向算出两点纬度差,一度等于60海里,1分等于1海里,海里与公里换算关系1海里等于1.852公里。东西方向量出距离到两点间纬度附近量出纬度差,得出海里数,再乘以1.852换算成公里。可按直角三角形原理求出两点间距离。

5、度的实际长度是111公里。但纬线的距离会越考两端越小,他的距离就会变成111乘COS纬度数,经度不变(如果在同一经度)

⑽ sql (mysql)实现查询某一个经纬度周围500米距离的餐馆,数据库存放所有餐馆的经纬度。

楼上回答的不详细,代码如下,正巧我做到相关项目,虽然回答有点晚,但是为了帮助后续搜索的人。。。
$user_lat='41.749034'; //传过来的纬度
$user_lng='123.46017';//传过来的经度
$store_mod=db("store"); //数据库
$storelist=$store_mod->query("SELECT *,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000) AS distance FROM store HAVING 【搜索条件如 state=1】 distance<【周围距离多少米 如 500】 ORDER BY distance ASC");
var_mp($storelist);
【】sql语句中括号的store_latitude,store_longitude为你数据库存的商家经纬度的字段名,其余的为注释