Как узнать расстояние между точками в моем геоме и точкой входа в долготу и широту - PullRequest
0 голосов
/ 19 декабря 2018

каждый, у меня есть имя таблицы 'geom', и я хотел бы рассчитать расстояние между точками, которые существуют в моей таблице, например 0101000020730800001DAB949EE95D4040E124CD1FD3F04340, и точками входа долгота и широта, и я попробовал это

SELECT * 
FROM postgis.cafeecoor
WHERE ST_Distance_Sphere(geom, ST_MakePoint(32.733792,39.865589)) <= 1 * 1609.34

1 Ответ

0 голосов
/ 19 декабря 2018

Вы можете использовать тип данных 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;
...