Чтобы вычислить расстояние между двумя координатами широты и долготы в PostgreSQL, вы можете использовать несколько методов. Вот несколько примеров кода:
- Формула гаверсина.
Формула гаверсина обычно используется для расчета расстояния между двумя точками на сфере (например, на Земле) с использованием их координат широты и долготы. Вот пример запроса:
SELECT
p1.latitude,
p1.longitude,
p2.latitude,
p2.longitude,
2 * 6371 * ASIN(SQRT(POWER(SIN((p2.latitude - p1.latitude) * pi() / 180 / 2), 2) +
COS(p1.latitude * pi() / 180) * COS(p2.latitude * pi() / 180) *
POWER(SIN((p2.longitude - p1.longitude) * pi() / 180 / 2), 2))) AS distance
FROM
points p1,
points p2
WHERE
p1.id = 1 AND p2.id = 2;
В этом примере points— это имя таблицы, содержащей столбцы широты и долготы, а p1.idи p2.idпредставляют идентификаторы двух точек, между которыми вы хотите рассчитать расстояние.
- Расширение PostGIS:
PostGIS — это пространственное расширение для PostgreSQL, предоставляющее расширенные географические функции. Он включает в себя функции расчета расстояний между географическими объектами. Чтобы использовать PostGIS, вам необходимо установить расширение и включить его в свою базу данных. Вот пример запроса:
SELECT
ST_Distance(
ST_SetSRID(ST_MakePoint(p1.longitude, p1.latitude), 4326),
ST_SetSRID(ST_MakePoint(p2.longitude, p2.latitude), 4326)
) AS distance
FROM
points p1,
points p2
WHERE
p1.id = 1 AND p2.id = 2;
В этом примере points— это имя таблицы, содержащей столбцы широты и долготы, а p1.idи p2.idпредставляют идентификаторы двух точек, между которыми вы хотите рассчитать расстояние. Функции ST_SetSRIDи ST_MakePointиспользуются для создания геометрических объектов на основе координат широты и долготы.
Это всего лишь несколько примеров. В зависимости от ваших конкретных требований и настроек базы данных доступны и другие методы.