Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: POINT, LINESTRING и работа с геометрией
Форумы портала PHP.SU » » Работа с СУБД » POINT, LINESTRING и работа с геометрией

Страниц (1): [1]
 

1. Dragon_Knight - 26 Апреля, 2017 - 22:07:12 - перейти к сообщению
Всем привет.
Прошу помощи, кто разбирается в необычных типах полей базы МySQL, которые позволяют работать с пространством, а именно POINT и LINESTRING.

Ситуация такая: есть много точек, которые организованны в линии, которые имеют параметры: ID, Название, Описание, ..., и их реально много: Одна линия состоит в среднем из 50 точек (координат GPS) и всего около 100к линий.
Задача состоит в поиске произвольной точке в базе, нахождению ID записи и выборка значений этой записи, при этом нужна линейная интерполяция между точками записи в БД.
Например у нас в БД есть запись линии с координатами (0 0, 6 6, 10 10). Мы делаем запрос точки (3 3) и получаем значение вышеописанной записи, при этом если сделать запрос точки (2 3) то запись уже не будет получена, т.к. точка не лежит на линии.
Так-же два важных момента: т.к. мы работает с координатами, то работаем с числами типа float, и второе Точка может иметь погрешность, переводя в метры до 50, при этом это не должно влиять на результат.

Для реализации задачи мне приглянулись поля типа LINESTRING, которые по сути выполняют большую часть работы, но найти толковой инструкции с примерами по работе я не нашёл и пришёл сюда, просить более умных людей о помощи.

 

Powered by ExBB FM 1.0 RC1