Я видел в StackOverflow алгоритм ratracing, называемый точкой в полигоне, который я реализовал в своем PHP-коде. В большинстве случаев это работает хорошо, но в некоторых сложных случаях с сложными полигонами и порочными точками он терпит неудачу, и он говорит, что точка не в полигоне, когда она есть.
Например:
Здесь вы найдете мои классы Polygon и Point: метод pointInPolygon находится в классе Polygon. В конце файла есть две точки, которые должны находиться внутри заданного многоугольника (True на Google Earth). Второй работает хорошо, но первый из них глючит:(.
Вы можете легко проверить многоугольник на Google Earth, используя этот файл KML.