PostgreSQL+;PostGIS函数,为一对(横向、纵向)点提供角度分离

PostgreSQL+;PostGIS函数,为一对(横向、纵向)点提供角度分离,postgresql,postgis,user-defined-functions,Postgresql,Postgis,User Defined Functions,我写了以下代码(花了几个小时试图获得正确的引用): 这个函数可以工作,但不幸的是,它的精度非常糟糕。似乎应该有一个更简单的方法来做到这一点。我只想把值传递给函数,让它传递给ST函数。如果不先将它们转换为字符串,我就完全无法找到这样做的方法,这可能是精度损失的原因 我这样做完全搞砸了吗?与其转换为字符串并使用ST_GeographyFromText创建点,不如直接使用函数接收到的值 CREATE FUNCTION ast3angsep(double precision, double precis

我写了以下代码(花了几个小时试图获得正确的引用):

这个函数可以工作,但不幸的是,它的精度非常糟糕。似乎应该有一个更简单的方法来做到这一点。我只想把值传递给函数,让它传递给ST函数。如果不先将它们转换为字符串,我就完全无法找到这样做的方法,这可能是精度损失的原因


我这样做完全搞砸了吗?

与其转换为字符串并使用
ST_GeographyFromText
创建点,不如直接使用函数接收到的值

CREATE FUNCTION ast3angsep(double precision, double precision, double precision, double precision) RETURNS double precision AS $$
SELECT ST_Distance( ST_GeographyFromText('SRID=4326;POINT('||$1||' '||$2||')'), ST_GeographyFromText('SRID=4326;POINT('||$3||' '||$4||')') )/6370986.0/PI()*180.0;
$$
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;