DB2两个经纬度间的距离(米)

CREATE FUNCTION DBREAD.GETDISTANCE
 ("LNG1" DOUBLE,
  "LAT1" DOUBLE,
  "LNG2" DOUBLE,
  "LAT2" DOUBLE
 ) 
  RETURNS INTEGER
  SPECIFIC DBREAD.SQL141104134103400
  LANGUAGE SQL
  NOT DETERMINISTIC
  READS SQL DATA
  STATIC DISPATCH
  CALLED ON NULL INPUT
  EXTERNAL ACTION
  INHERIT SPECIAL REGISTERS
  BEGIN ATOMIC
    DECLARE earth_padius double;
    DECLARE radLat1 double;
    DECLARE radLat2 double;
    DECLARE a double;
    DECLARE b double;
    DECLARE s double;
    set earth_padius= 6378137.0; 
    set radLat1 = RADIANS(lat1);
    set radLat2 = RADIANS(lat2);
    set a = radLat1 - radLat2;
    set b = RADIANS(lng1) - RADIANS(lng2);
    set s = 0;
    set s = 2 * Asin(Sqrt(power(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) *
      power(sin(b / 2), 2)));
    set s = s * earth_padius;
    set s = CEILING(Round(s,0));
    return s;
  end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值