![Smile :)](./images/smilies/icon_smile.gif)
Есть некие сложные не выпуклые полигоны из географических точек. Полигоны предполагается хранить раздельно в БД MySQL в виде массивов вида:
[ [ [ 58.0272, 50.4625 ], [ 58.2538, 49.5616 ], [ 58.8908, 50.3306 ], [ 58.9078, 51.9346 ], [ 58.5479, 50.7701 ], [ 58.2190, 51.0667 ], [ 58.0272, 50.4625 ] ] ]
Или в любом другом формате, это не особо важно.
На сервер будут посылаться координаты прямоугольника видимой части карты. Мне нужно каким-то образом сравнивать прямоугольный полигон и сложные полигоны из БД и посылать обратно ответ.
Собираюсь писать PHP-скрипт, который и должен сравнивать полигоны. Нужна функция или идея, как лучше это сделать.
Для ускорения процесса рассматриваю вариант для каждого сложного полигона хранить выпуклый полигон и сравнивать сначала с ним. Если выпуклый полигон отсутствует в видимой части карты, то и не пытаться сравнивать сложный полигон. Но даже это решение мне не доступно. В школе по геометрии и математике была тройка.
В MySQL 5.6.1 добавилась функция ST_Intersects(), которая, вероятно, позволила бы решить эту проблему, но у меня версия 5.5.35-33.0. Придётся искать серверное решение на PHP.