LANGUAGE plpgsql:指定函数使用的语言为 PL/pgSQL,这是 PostgreSQL 的过程化 SQL 语言,支持编写存储过程和函数。
经纬度的转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14
--将经度 x 和纬度 y 转换为新的纬度坐标,用于gcj02towgs84函数中的计算 CREATEOR REPLACE FUNCTION transformLat(x float8, y float8) RETURNS float8 AS $$ DECLARE ret float8; pi float8 :=3.1415926535897932384626; BEGIN ret :=-100.0+2.0* x +3.0* y +0.2* y * y +0.1* x * y +0.2*sqrt(abs(x)); ret := ret + (20.0*sin(6.0* x * pi) +20.0*sin(2.0* x * pi)) *2.0/3.0; ret := ret + (20.0*sin(y * pi) +40.0*sin(y /3.0* pi)) *2.0/3.0; ret := ret + (160.0*sin(y /12.0* pi) +320*sin(y * pi /30.0)) *2.0/3.0; RETURN ret; END; $$ LANGUAGE plpgsql;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
--将经度 x 和纬度 y 转换为新的经度坐标,用于gcj02towgs84函数中的计算 CREATEOR REPLACE FUNCTION transformLon(x float8, y float8) RETURNS float8 AS $$ DECLARE ret float8; pi float8 :=3.1415926535897932384626; BEGIN ret :=300.0+ x +2.0* y +0.1* x * x +0.1* x * y +0.1*sqrt(abs(x)); ret := ret + (20.0*sin(6.0* x * pi) +20.0*sin(2.0* x * pi)) *2.0/3.0; ret := ret + (20.0*sin(x * pi) +40.0*sin(x /3.0* pi)) *2.0/3.0; ret := ret + (150.0*sin(x /12.0* pi) +300.0*sin(x /30.0* pi)) *2.0/3.0; RETURN ret; END; $$ LANGUAGE plpgsql;