私は次のコードを書きました(引用を正しくするために数時間を費やした後):
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関数に渡してもらいたいだけです。最初に文字列に変換せずにこれを行う方法を完全に見つけることができませんでした。これはおそらく精度の低下が発生する場所です。
私はこれを完全に台無しにしていますか?