У меня вопрос об использовании postgreSQL/postGIS.Получите метрическое расстояние между двумя точками через запрос PostgreSQL/PostGIS
Я хотел бы отображать маркеры на карте (хранящейся в базе данных), которые находятся на некотором расстоянии от пользователя (координаты, заданные для запроса).
Тип поля маркеров - POINT (я храню lat/long). Позиция пользователя определяется программой API Карт Google.
Вот фактический запрос:
SELECT * FROM geo_points WHERE ST_distance(ST_SetSRID(geo_points.coords::geometry,4326),ST_GeomFromEWKT('SRID=4326;POINT(45.0653944 4.859764599999996)')) > 65
Я знаю (после некоторых исследований в Интернете), что функция ST_distance дает мне расстояние в градусах между маркерами и местоположения пользователя, и что я проверить расстояние в км ,
Я думаю, что мне нужно использовать функцию ST_tranform для преобразования точек в метрических координатах.
Так что мои вопросы: - что такое SRID для Франции? - как я могу сделать это динамически для всего мира в соответствии с положением пользователя?
Я также знаю, что существует функция ST_within, и это может сделать это. Но я ожидаю, что позже мне понадобится дистанция.
Любая помощь будет высоко оценена
пс: есть, возможно, решения в другой пост, но все ответы, которые я нашел во время моих исследований не были на самом деле удовлетворения моих потребностей.
на основе [это] (http://postgis.refractions.net/docs/ST_Distance.html), ST_Distance - для типа геометрии Возвращает двумерное декартовое минимальное расстояние (на основе пространственного реф) между двумя геометриями в проецируемых единицах –
попробуйте [ST_Distance_Sphere] (http://postgis.refractions.net/docs/ST_Distance_Sphere.html) –