Этот вопрос для экспертов Mysql по геопространственному расширению.
Следующий запрос не соответствует ожидаемому:
create database test_db;
use test_db;
create table test_table (g polygon not null);
insert into test_table (g) values (geomfromtext('Polygon((0 5,5 10,7 8,2 3,0 5))'));
insert into test_table (g) values (geomfromtext('Polygon((2 3,7 8,9 6,4 1,2 3))'));
select
X(PointN(ExteriorRing(g),1)), Y(PointN(ExteriorRing(g),1)),
X(PointN(ExteriorRing(g),2)), Y(PointN(ExteriorRing(g),2)),
X(PointN(ExteriorRing(g),3)), Y(PointN(ExteriorRing(g),3)),
X(PointN(ExteriorRing(g),4)), Y(PointN(ExteriorRing(g),4))
from test_table where MBRContains(g,GeomFromText('Point(3 6)'));
По сути, мы создаем 2 полигона и пытаемся использовать MBRContains, чтобы определить, находится ли точка в одном из двух полигонов.
Удивительно, но возвращает оба полигона! Точка 3,6 должна существовать только в первом вставленном многоугольнике.
Обратите внимание, что оба полигона наклонены (как только вы нарисуете полигоны на листе бумаги, вы увидите)
Почему MySql возвращает оба полигона? Я использую MySql Community Edition 5.1.