Найти записи из таблицы, в радиусе M метров
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 ноя 2013, 13:07
- Репутация: 0
Найти записи из таблицы, в радиусе M метров
Есть табличка с полем coordinates типа geometry (POINT).
Есть координаты человека (x, y) и запрос - найти все записи в радиусе M метров.
В мануале есть вариант такой выборки, но там берется прямоугольная область для ограничения выборки - http://gis-lab.info/docs/postgis/manual ... #id2699521 . Можно ли тоже самое сделать с кругом?
Нагуглил ST_Point_Inside_Circle, но не понятно в каких попугаях измеряется последний аргумент (float radius)
Есть координаты человека (x, y) и запрос - найти все записи в радиусе M метров.
В мануале есть вариант такой выборки, но там берется прямоугольная область для ограничения выборки - http://gis-lab.info/docs/postgis/manual ... #id2699521 . Можно ли тоже самое сделать с кругом?
Нагуглил ST_Point_Inside_Circle, но не понятно в каких попугаях измеряется последний аргумент (float radius)
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 ноя 2013, 13:07
- Репутация: 0
Re: Найти записи из таблицы, в радиусе M метров
Нашел один из вариантов, указываю через ST_DWithin(coordinates, ST_SetSRID(ST_MakePoint(х, у), 4326) , 100)
Но находятся объекты, которые дальше на пару километров, из-за чего это?
Но находятся объекты, которые дальше на пару километров, из-за чего это?
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Найти записи из таблицы, в радиусе M метров
потому что 100 градусов это много
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 ноя 2013, 13:07
- Репутация: 0
Re: Найти записи из таблицы, в радиусе M метров
Кажется проблема оказалась в этом: http://gis.stackexchange.com/questions/ ... -of-meters (srid 4326 - радианы). Что бы получить более точны результат нужно привести к типу geography
Ну и что бы не шерстить всю табличку еще один индекс:
Код: Выделить всё
ST_DWithin(coordinates::geography...
Код: Выделить всё
CREATE INDEX ...index_name... ON ...table... USING gist (geography(...row...))
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 ноя 2013, 13:07
- Репутация: 0
Re: Найти записи из таблицы, в радиусе M метров
Максим, то есть в функции ST_DWithin третий аргумент принимает размерность первых двух?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 22 гостя