91、达梦数据库和mysql数据库获取两个坐标之间的距离
参考:参考
mysql 数据库:
select st_distance_sphere(POINT(经度1,纬度1), POINT(经度2,纬度2))
达梦数据库没有内置函数,需要自己手动创建函数
CREATE OR REPLACE FUNCTION "模式名"."RAD"("NUM" IN NUMBER(22, 6))
RETURN NUMBER(22, 6)
AUTHID DEFINER
is
PI number :=3.141592625;
BEGIN
return NUM* PI/180.0;
END;
函数:
CREATE OR REPLACE FUNCTION "QBFXPXT"."GETDISTANCE"("LNG1" IN NUMBER(22, 6),"LAT1" IN NUMBER(22, 6),"LNG2" IN NUMBER(22, 6),"LAT2" IN NUMBER(22, 6))
RETURN NUMBER(22, 6)
AUTHID DEFINER
is
earth_padius number := 6378393;
radLat1 number := rad(LAT1);
radLat2 number := rad(LAT2);
a number := radLat1 - radLat2;
b number := rad(LNG1) - rad(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;
单位是米(如果需要单位千米则把6378393改成6378.393)
mysql执行如下所示:
达梦数据库执行如下所示:
有一些差距,但是不是很大
制作不易,有好的办法的小伙伴可以评论区留言