Я определил тип геометрии, и в него были введены как многоугольники, так и окружности. Полигон был введен с использованием запроса следующего типа:
ST_GeomFromText('POLYGON$polygon')
где $ polygon содержит точки.
И я ввел круг в той же колонке, что и:
ST_Buffer((ST_GeomFromText('POINT($longitude $latitude)')), $radius)
Теперь мне нужно проверить, находится ли заданная точка внутри и геометрии.
Кто-нибудь может мне помочь?
Я пытался использовать этот запрос:
ST_CONTAINS(shape,ST_GeomFromText('POINT($longitude $latitude)'))
где форма — это имя моего столбца типа Geometry. Но это всегда дает мне верность для кругов, даже если они находятся вне круга.
Глядя на комментарии, вы используете геометрические типы с пространственной системой отсчета, которая использует единицы измерения в градусах (SRID = 4326). Создание круга с радиусом 5000 градусов — это массивный круг, который будет содержать все на земле.
Вы можете либо использовать проекционную систему пространственной привязки с единицами метров, либо рассмотреть возможность использования типа географии. Вы также можете буферизовать круг, используя тип географии, а затем преобразовать его обратно в тип геометрии.
Других решений пока нет …