PostgreSQL + функция PostGIS, которая дает угловое разделение для пары (широта, лонг) точек - PullRequest
0 голосов
/ 24 сентября 2010

Я написал следующий код (потратив несколько часов , пытаясь получить правильное цитирование):

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. Я был совершенно не в состоянии найти способ сделать это без предварительного преобразования их в строку, что, вероятно, является причиной потери точности.

Я делаю это полностью облажался?

1 Ответ

1 голос
/ 29 апреля 2011

Вместо преобразования в строки и создания точки с использованием ST_GeographyFromText попробуйте использовать ST_MakePoint напрямую со значениями, полученными функцией.

...