Oracle根据两点经纬度计算两点距离

Oracle数据库根据两点经纬度计算两点的距离

 

abs(6371.004 * acos(sin(纬度1) *sin(纬度2) * cos(经度1 - 经度2) +cos(纬度1) * cos(纬度2)) * acos(-1) / 180)

举例:现有两个坐标点A(经度1,纬度1),B(经度2,纬度2),现计算两点之间的直线举例:

 

 

abs(6371.004 * acos(sin(纬度1) *sin(纬度2) * cos(经度1 - 经度2) +cos(纬度1) * cos(纬度2)) * acos(-1) / 180)

在数据库中查询语句为:

 

 

SELECT abs(6371.004 * acos(sin(纬度1) *sin(纬度2) * cos(经度1 - 经度2) +cos(纬度1) * cos(纬度2)) * acos(-1) / 180) FROM dual

查询结果为公里为单位的距离

示例:

round(abs(6371.004 * acos(sin(x.lon) *sin(#{lng}) * cos(x.lat- #{lat}) +cos(x.lon) * cos(#{lng})) * acos(-1) / 180),2) distance

在这里我用round函数取了两位小数,相当于是精确到十米上了,然后里面的x.lon,x.lat是我本身要用来计算距离的坐标表里面取出来的,lon,lat是我要与之计算距离的坐标,相当于是目标点,最后计算结果用了distance做别名

 

 

 

 

 

你可能感兴趣的:(数据库-Oracle)