MBR Внутри не точно в MySQL - PullRequest
       3

MBR Внутри не точно в MySQL

3 голосов
/ 16 октября 2011

Я использую функцию MBRWithin довольно много раз. Внезапно я замечаю на карте Google, что POINT(101.11857 4.34475) находится за пределами географического ограждения, которое я указываю, но оно все равно дает значение 1 в mysql по любой причине, или необходимо выполнить настройку?

SELECT MBRWithin(GeomFromText('POINT(101.11857 4.34475)'),GeomFromText('POLYGON((101.12112522125244 4.3531723687957164,101.11846446990967 4.351417913665312,101.13138198852539 4.336397898951581,101.13477230072021 4.33211863778494,101.14065170288086 4.321933898868271,101.14992141723633 4.306699328215635,101.15455627441406 4.30978050198082,101.1397933959961 4.334600612212089,101.12112522125244 4.3531723687957164,101.12112522125244 4.3531723687957164))')) As geoFenceStatus

Ответы [ 2 ]

6 голосов
/ 18 октября 2011

MySQL 5.6.1 и более поздние версии имеют алгоритмы точной геометрии в дополнение к более ранним функциям, которые работали только с MBR.

Вы можете использовать ST_WITHIN вместо MBR_WITHIN. См. документацию . Как это

SELECT ST_Within(GeomFromText('POINT(101.11857 4.34475)'),
  GeomFromText('POLYGON((101.12112522125244 4.3531723687957164,101.11846446990967 
    4.351417913665312,101.13138198852539 4.336397898951581,101.13477230072021 
    4.33211863778494,101.14065170288086 4.321933898868271,101.14992141723633 
    4.306699328215635,101.15455627441406 4.30978050198082,101.1397933959961 
    4.334600612212089,101.12112522125244 4.3531723687957164,101.12112522125244 
    4.3531723687957164))')) As geoFenceStatus
1 голос
/ 16 октября 2011

MBRWithin() вернет результаты на основе минимального ограничивающего прямоугольника его параметров.Ваш многоугольник содержит как большие, так и меньшие значения для обеих координат, чем точка, поэтому он будет находиться внутри MBR многоугольника.

В MySQL нет встроенной точки в алгоритме многоугольника, поэтому вам придется либо свернутьвладеть или найти кого-то еще. Этот кажется хорошим кандидатом.

...