Chinaunix首页 | 论坛 | 博客
  • 博客访问: 839335
  • 博文数量: 182
  • 博客积分: 1992
  • 博客等级: 上尉
  • 技术积分: 1766
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 11:49
文章分类

全部博文(182)

文章存档

2019年(1)

2016年(5)

2015年(29)

2014年(38)

2013年(21)

2012年(36)

2011年(52)

我的朋友

分类: 数据库开发技术

2014-02-20 15:16:06


点击(此处)折叠或打开

  1. DELIMITER $$

  2. CREATE DEFINER=`root`@`localhost` FUNCTION `lat_long_distance`(in_lat1 DOUBLE, in_long1 DOUBLE, in_lat2 DOUBLE, in_long2 DOUBLE) RETURNS double
  3. BEGIN
  4.     DECLARE Distance DOUBLE;

  5.     DECLARE RadLatBegin DOUBLE;
  6.     DECLARE RadLatEnd DOUBLE;
  7.     DECLARE RadLatDiff DOUBLE;
  8.     DECLARE RadLngDiff DOUBLE;

  9.     DECLARE EARTH_RADIUS DOUBLE;
  10.     SET EARTH_RADIUS = 6378.137;

  11.     SET RadLatBegin = in_lat1 *PI()/ 180.0 ;
  12.     SET RadLatEnd = in_lat2 *PI()/ 180.0 ;
  13.     SET RadLatDiff = RadLatBegin - RadLatEnd;
  14.     SET RadLngDiff = in_long1 *PI()/ 180.0 - in_long2 *PI()/ 180.0 ;
  15.     SET DISTANCE = 2 *ASIN(
  16.                SQRT(
  17.                    POWER(SIN(RadLatDiff / 2), 2)+COS(RadLatBegin)*COS(RadLatEnd)
  18.                    *POWER(SIN(RadLngDiff / 2), 2)
  19.                )
  20.            );
  21.        
  22.     SET Distance = Distance * EARTH_RADIUS;
  23. RETURN DISTANCE;
  24. END

阅读(3391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~