@boomwest

Как определить принадлежность точки полигону в mysql ?

Необходимо выбрать id полигона, которому принадлежит точка.
В Mysql есть функция MBRWithin, которая скорее всего и должна это делать.
Все определяется хорошо, если полигон - прямоугольник, если же полигон имеет сложную фигуру -
точка всегда будет находится внутри описаного прямоугольника.
Нужно проверить именно в многоугольнике.

//База
CREATE TABLE IF NOT EXISTS `cities` (
`id` int(11) NOT NULL,

`name` text NOT NULL,
`g` geometry DEFAULT NULL
);

//Геометрия
SET @g = 'POLYGON((50.4415440837958 30.559938127990726),(50.4411294575134 30.560313846725332),(50.44358926678977 30.56884328067007),(50.44398696208372 30.56849997647087),(50.4415440837958 30.559938127990726))';
UPDATE `cities` SET `g` = PolygonFromText(@g) WHERE `cities`.`id` = 1;

//Проверка точки
SET @poi = "POINT(50.441338 30.565152)',0";
SELECT id FROM `cities` WHERE MBRWithin(GeomFromText(@poi), g ) = 1 LIMIT 1

src.png
  • Вопрос задан
  • 3523 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
ST_Within, начиная с Mysql версии 5.6
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы