Страница 1 из 1

Сравнение сложных полигонов

Добавлено: 22 сен 2015, 12:03
Ivan Zykov
Добрый день! Бьюсь над задачей, но самостоятельно не могу найти решение. Решил обратиться к мировому сообществу :).

Есть некие сложные не выпуклые полигоны из географических точек. Полигоны предполагается хранить раздельно в БД 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.

Re: Сравнение сложных полигонов

Добавлено: 22 сен 2015, 12:17
trir
Е. А. Никулин - Компьютерная геометрия и алгоритмы машинной графики

Re: Сравнение сложных полигонов

Добавлено: 23 сен 2015, 05:57
Vladimir_R
GeoPHP Вам в помощь.