0

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

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 函数。如果不先将它们转换为字符串,我完全找不到这样做的方法,这可能是精度损失的原因。

我这样做完全搞砸了吗?

4

1 回答 1

1

ST_GeographyFromText尝试将ST_MakePoint直接与函数接收的值一起使用,而不是转换为字符串并使用创建点。

于 2011-04-28T23:33:33.993 回答