У меня проблема с использованием геопространственной функции ST_CONTAINS на MySQL 5.6.31.
У меня есть следующий МНОГОПОЛИГОН:
Мне нужно проверить, находится ли какая-либо точка внутри МНОГОПОЛИГА, в данном случае красная на изображении, поэтому я делаю:
SET @g1 = ST_GEOMFROMTEXT('MULTIPOLYGON(((41.94142040508967 12.41757292797851,41.94442097040815 12.419032049682611,41.93529115206086 12.43456740429687,41.91939065648979 12.425126028564447,41.92475512204906 12.407702398803705,41.94142040508967 12.41757292797851),(41.92552143745503 12.409933996704096,41.90987400689221 12.402638388183588,41.90252797153794 12.421864462402338,41.907446714803015 12.433194113281244,41.92603230927889 12.419461203124994,41.92552143745503 12.409933996704096,41.92552143745503 12.409933996704096),(41.906248516384416 12.397567221513638,41.89551602293968 12.423402258745083,41.90101026279693 12.430268713823208,41.90771770545893 12.420398184648404,41.91033661082307 12.39653725325192,41.906248516384416 12.397567221513599,41.906248516384416 12.397567221513599,41.906248516384416 12.397567221513638,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.39756722151363,41.906248516384416 12.397567221513638)))');
SET @g2 = POINT(41.9059998,12.4159939);
SELECT ST_CONTAINS(@g1,@g2);
Результат равен 0.
Если я изменил точку, указав, например, точку в верхнем многоугольнике, я получил 1.
Почему это поведение? Кажется, что когда два многоугольника перекрываются, ST_CONTAINS видят его как пустую их часть.
Что я могу сделать?
Спасибо всем!