我写了以下代码(花了几个小时试图让引用正确):
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;
此功能有效,但不幸的是,它的精度是可怕的。似乎应该有一个更简单的方法来做到这一点。我只想将值传递给函数并将它们传递给 ST 函数。如果不先将它们转换为字符串,我完全找不到这样做的方法,这可能是精度损失的原因。
我这样做完全搞砸了吗?