Как в PostGIS получить точки внутри заданной площади?
У меня есть таблица с местами. В таблице есть колонка coordinates типа geography(POINT), координаты с гугл карт.
Задача выбрать места, которые входят в определенную область на карте (видимый на фронте участок гугл карт).
С фронта мне присылают координаты нижнего левого и верхнего правого угла, теоретически можно попробовать получить все четыре.
Не могу разобраться в доках к постгису.. смотрел на функции ST_Contains и ST_CoveredBy, но как-то не очень понял.. в доках примеры не очень ясные. А может не то смотрел.
Супер. Выглядит как что-то, что работает) А где подробнее можно почитать, как ты получил именно такой запрос. И какая здесь будет разница в указании ::geometry или ::geography. Точки все-таки хранятся как география, а не геометрия.
П.С. не забудь правильно указать систему координат.
это ты про srid? вроде бы же по умолчанию используется 4326?
Павел, Известно где - в мануале postgis.net/docs/manual-2.0/reference.html
Лучше явно указывать SRID, во избежания недопонимания. Особенно, что касается расстояний, а то указывают числа в метрах, когда система от них ждёт в градусах. А потом удивляются, где это на глобусе 500 градусов.
Павел, Оператор && оперирует 2D-box'сами, поэтому нет нужны их создавать намеренно. Я сходил проверил, всё работает с одной линей. Единственное потребовалось, чтобы обе геометрии были в одной системе координат.
SELECT ST_AsText(ST_Transform(way, 4326)) AS wkt FROM public.planet_osm_point WHERE way && ST_Transform(ST_GeomFromText('LINESTRING(50 53, 51 54)', 4326), 3857)