PostgreSQL: расстояние между двумя координатами в метрах
Можно добавить функцию вида:
CREATE OR REPLACE FUNCTION public.distance(
lat1 double precision,
lon1 double precision,
lat2 double precision,
lon2 double precision)
RETURNS double precision
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
R integer = 6371e3; -- Метры
rad double precision = 0.01745329252;
f1 double precision = lat1 * rad;
f2 double precision = lat2 * rad;
df double precision = (lat2-lat1) * rad;
dl double precision = (lon2-lon1) * rad;
a double precision = sin(df/2) * sin(df/2) + cos(f1) * cos(f2) * sin(dl/2) * sin(dl/2);
c double precision = 2 * atan2(sqrt(a), sqrt(1-a));
BEGIN
RETURN R * c;
END
$BODY$;