码迷,mamicode.com
首页 > 数据库 > 详细

GOOGLE与百度经纬度互转(plsql版)

时间:2015-04-15 13:34:50      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

首先创建两个存储过程


BAIDU2GOOGLE(百度转google)和GOOGLE2BAIDU(google转百度)。

CREATE OR REPLACE PROCEDURE "BAIDU2GOOGLE"
(in_lat IN OUT NUMBER,in_lng IN OUT NUMBER)
IS
   RESULT NUMBER;
   V NUMBER;
   X NUMBER;
   Y NUMBER;
   Z NUMBER;
   T NUMBER;
BEGIN

    IF in_lat IS NULL OR in_lng IS NULL THEN
       RETURN;
    END IF;
   
    IF in_lat = 0 OR in_lng = 0 THEN
       RETURN;
    END IF;
   
    V := (ACOS(-1) * 3000.0) / 180.0;
    X := in_lng - 0.0065;
    Y := in_lat - 0.006;
   
    IF X = 0 OR Y = 0 THEN
      RETURN;
    END IF;
   
    Z := sqrt(X*X + Y*Y) - 0.00002 * sin(Y*V);
    T := atan2(Y,X) - 0.000003 * cos(X*V);

    in_lat := Z * sin(T);
    in_lng := Z * cos(T);
   
    EXCEPTION
      WHEN OTHERS THEN
        NULL;
END;


CREATE OR REPLACE PROCEDURE "GOOGLE2BAIDU"
(in_lat IN OUT NUMBER,in_lng IN OUT NUMBER)
IS
   RESULT NUMBER;
   V NUMBER;
   X NUMBER;
   Y NUMBER;
   Z NUMBER;
   T NUMBER;
BEGIN

    IF in_lat IS NULL OR in_lng IS NULL THEN
       RETURN;
    END IF;
   
    IF in_lat = 0 OR in_lng = 0 THEN
       RETURN;
    END IF;
   
    V := (ACOS(-1) * 3000.0) / 180.0;
    X := in_lng;
    Y := in_lat;
    Z := sqrt(X*X + Y*Y) + 0.00002 * sin(Y*V);
    T := atan2(Y,X) + 0.000003 * cos(X*V);

    in_lat := Z * sin(T) + 0.006;
    in_lng := Z * cos(T) + 0.0065;
   
    EXCEPTION
      WHEN OTHERS THEN
        NULL;
END;


测试代码:

declare
val varchar2(1024);
lat number;
lng number;
begin
  lat := 25.123456;
  lng := 120.987654;
 
  google2baidu(lat,lng);
  val := to_char(lat) || ‘ , ‘ || to_char(lng);
  dbms_output.put_line(val);
  baidu2google(lat,lng);
  val := to_char(lat) || ‘ , ‘ || to_char(lng); 
  dbms_output.put_line(val); 
end;


输出结果:

25.12950357111129114394070387150607218949 , 120.99415968477080269592699287102653898
25.12345611379500842252418931941721965068 , 120.987654009372443376128478150908972217

GOOGLE与百度经纬度互转(plsql版)

标签:

原文地址:http://blog.csdn.net/cackeme/article/details/45057455

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!