加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2016-03-11 15:55:35)
标签:

经纬度计算距离

oracle经纬度算距离

根据两点经纬度算距离

根据城市经纬度算距离

经纬度算距离oracle

分类: Oracle数据库
     在某些需求中,需要计算给定的任意2点的经纬度之间的距离,比如:你知道两个城市的经纬度数据,那么就可以算出这两座城市之间的大概距离,那在Oracle中,该如何处理呢?下面我们来看下具体的处理过程。

1、创建获取弧度的函数
create or replace function rad(d number) return number
is
pi number :=3.141592625;
begin
  return  d * pi/180.0;
end ;

--在Command Window下测试函数
SQL> select rad(360) from dual;
  RAD(360)
----------
6.28318525


2、创建根据经纬度计算距离的函数
create or replace function get_distance(
jd1 number,
wd1 number,
jd2 number,
wd2 number
)
return number is
  earth_padius number := 6378.137;  --地球赤道半径(千米),地球平均半径=6371.004 千米
  radjd1       number := rad(jd1);
  radjd2       number := rad(jd2);
  a            number := radjd1 - radjd2;
  b            number := rad(wd1) - rad(wd2);
  s            number := 0;
begin
  s := 2 * Asin(Sqrt(power(sin(a/2),2) +cos(radjd1) * cos(radjd2) * power(sin(b/2),2)));
  s := s * earth_padius;
  s := Round(s * 10000) / 10000;
  return s;
end;

注意:该函数计算出来的距离单位为:千米

--在Command Window下测试函数
SQL> select get_distance(106.724347,26.590299,106.703848,26.588635) from dual;
GET_DISTANCE(106.724347,26.590
------------------------------
                        2.2826


经纬度算距离oracle
参考资料:http://blog.csdn.net/iw1210/article/details/9164573

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有