всем, у меня есть таблица с именем geom, и я хотел бы рассчитать расстояние между точками, которые существуют в моей таблице, например 0101000020730800001DAB949EE95D4040E124CD1FD3F04340
и долгота и широта точек входа, и я попробовал это
SELECT *
FROM postgis.cafeecoor
WHERE ST_Distance_Sphere(geom, ST_MakePoint(32.733792,39.865589)) <= 1 * 1609.34
Вы можете использовать тип данных geography
, который возвращает расстояние в метрах.
SELECT *, st_distance(geom::geography, ST_MakePoint(32.733792,39.865589)::geography)
FROM postgis.cafeecoor
Для вашего примера он возвращает 1760,32533367 метров.
В зависимости от того, как ваша геометрия сохраняется (как истинная геометрия или как текст, с заданной проекцией или без нее), вам, возможно, придется добавить несколько дополнительных шагов, таких как создание геометрии и установка ее системы координат.
SELECT *, st_distance(
st_setsrid(geom::geometry,4326)::geography,
ST_MakePoint(32.733792,39.865589)::geography)
FROM postgis.cafeecoor;
большое спасибо за то, что помогли второму поработать для моего