今天给大家分享计算地球上两个坐标点之间里程不同数据库版本的脚本。

1、SQLServer脚本

–-计算地球上两个坐标点(经度,纬度)之间距离sql函数
CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL
, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL)
RETURNS FLOAT
AS
BEGIN
–-距离(千米)
DECLARE @Distance REAL
DECLARE @EARTH_RADIUS REAL
SET @EARTH_RADIUS = 6378.137
DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL
,@RadLngDiff REAL
SET @RadLatBegin = @LatBegin *PI()/180.0
SET @RadLatEnd = @LatEnd *PI()/180.0
SET @RadLatDiff = @RadLatBegin - @RadLatEnd
SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0
SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)
+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2)))
SET @Distance = @Distance * @EARTH_RADIUS
RETURN @Distance
END
--使用方法如下:
SELECT dbo.fnGetDistance(25,30,12.56,15.5) ;

2、MySQl脚本

–-计算地球上两个坐标点(经度,纬度)之间距离sql函数
CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL,
@LngBegin REAL, @LatEnd REAL, @LngEnd REAL)
RETURNS FLOAT
AS
BEGIN
–-距离(千米)
DECLARE @Distance REAL
DECLARE @EARTH_RADIUS REAL
SET @EARTH_RADIUS = 6378.137
DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL
,@RadLngDiff REAL
SET @RadLatBegin = @LatBegin *PI()/180.0
SET @RadLatEnd = @LatEnd *PI()/180.0
SET @RadLatDiff = @RadLatBegin - @RadLatEnd
SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0
SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)
+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2)))
SET @Distance = @Distance * @EARTH_RADIUS
RETURN @Distance
END
--使用方法如下:
SELECT dbo.fnGetDistance(25,30,12.56,15.5) ;

3、Orcale脚本

CREATE OR REPLACE FUNCTION GetDistance
(lat1 number, lng1 number,lat2 number,lng2 number)
RETURN NUMBER is earth_padius number := 6378.137; radLat1      number := Radian(lat1); radLat2      number := Radian(lat2); a            number := radLat1 - radLat2; b            number := Radian(lng1) - Radian(lng2); s            number := 0;
begin s := 2 * Asin(Sqrt(power(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * power(sin(b / 2), 2))); s := s * earth_padius; s := Round(s * 10000) / 10000; return s;
end;
--使用方法
select GetDistance(25,30,12.56,15.5) from dual

以上是分享内容,感谢阅读,欢迎收藏、点赞、转发。您的支持是我最大的创作动力,有问题可以留言大家共同进步!

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

数据库:计算地球上两个坐标点之间里程相关推荐

  1. 如何计算地球球面上两个坐标点之间的弧度

    如何计算地球球面上两个坐标点之间的弧度 首先,请确认你已经阅读过博主的如下文章: [Google Map]怎么根据经维度计算两点之间的距离,怎么根据经纬度与距离计算目标地点的经纬度 http://bl ...

  2. Java:计算地球上两个经纬度坐标之间的距离-geodesy和geotools实现

    目录 方式一:自定义公式计算 方式二:geodesy计算距离 方式三:geotools计算距离 两个点的经纬度 latitude纬度 longitude经度 地点 22.678611 113.8056 ...

  3. php 计算两点时间距离,PHP计算地球上两点之间的距离(示例详解)

    给定经度和纬度,求地球上两点之间的距离.首先我们需要了解该问题的解决思路,然后再用PHP代码来实现计算. 此问题可以用半正矢(haversine)公式求解: 大圆距离或正交距离是球面(或地球表面)上两 ...

  4. 根据经纬度计算地球上两点之间的距离——Haversine公式介绍及计算步骤

    目录 摘要 1.半正矢公式(Haversine Formula)介绍 2.半正矢公式应用 3.半正矢公式计算 3.1 主要思路 3.2 计算步骤 3.2.1 平面向量计算方法 3.2.2 空间向量计算 ...

  5. 给定经纬度计算距离_根据经纬度计算地球上两点之间的距离js实现代码

    利用JS实现的根据经纬度计算地球上两点之间的距离 最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下. 计算地球表面两点间的距离大概有两种办法. 第一种是默认地球是一个光滑的球面 ...

  6. 由经纬度计算地球上任意两点的距离

    由经纬度计算地球上任意两点的距离 在地球上,城市的地理位置.GPS定位.一些地标的地理位置等是由经纬度给出的,本文主要根据两个地理位置的经纬度,来计算两个地理位置之间的距离. %计算城市间距离 zb= ...

  7. python计算两个坐标点之间的距离

    背景:有几个门店和大厦,看看这几个门店和大厦旁边有没有快递柜 数据:门店和大厦只有地址数据,快递柜系统有地址数据和经纬度数据 类似的需求应该比较多,这里的核心点是关于两个坐标点之间距离的计算,之前没用 ...

  8. Java黑皮书课后题第4章:*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值

    *4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离.编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值 题目 题目概述 破题 运行示例 代码 题目 题目概述 *4 ...

  9. 采用成员函数和友元函数计算给定两个坐标点之间的距离

    设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离 ...

最新文章

  1. andriod studio 注释乱码问题
  2. python3 练习题100例 (二十二)输入两个字符串,输出两个字符串集合的并集
  3. Volatile 关键字 内存可见性
  4. 【Linux】一步一步学Linux——fgrep命令(了解)(51)
  5. PS教程第十九课:移动工具
  6. fvdm 跟驰模型 matlab仿真_MATLAB数值计算在光学仿真和教学中的应用
  7. JAVA原码反码补码
  8. Hash算法大全(java实现)
  9. RabbitMQ 中的 7 种队列模式,写得太好了!
  10. 使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理
  11. RDCMan安装使用说明
  12. 数字信号处理-基础一
  13. 理解多线程(四)--原子量和原子操作
  14. python 携程订单接口_携程api开发
  15. 微信跳转APP最全解析
  16. 出现问题请与你的系统管理员联系 照片出现问题请与你的系统管理员 照片出现问题请与系统管理员联系 无法打开应用请与管理员联系
  17. Java 进阶 hello world! - 中级程序员之路
  18. Java设计模式-模板模式
  19. QChart之QBarSeries绘制条形图
  20. windows7/windows2008修改远程桌面连接并修改防火墙配置脚本

热门文章

  1. 《CLR via C#》读书笔记 之 参数
  2. Coolite 中GridView行按钮取行ID并调用服务器端代码
  3. Exchange2007 从零到入门(2)---收件人管理
  4. Photoshop的批处理(有海量的数码照片,想传上网的话就看下)
  5. HDR 成像技术学习(三)—— LOFIC
  6. HALCON示例程序texture.hdev检测树木
  7. 包含min函数的栈 python_面试题_设计包含 min函数的栈
  8. matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
  9. face alignment by 3000 fps系列学习总结(三)
  10. python反爬虫破解_python中绕过反爬虫的方法总结