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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с географическими данными вопрос дилетанта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Помогите решить задачу с определением географических областей
lostandleft
Отправлено: 02 Декабря, 2015 - 20:03:07
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Здравствуйте.
Подскажите пожалуйста как решить задачу по выделению географических кординат в области.

Условие: Предположим, что у нас есть GPS трекер, который сбрасывает данные о своем положение каждые несколько секунд.
Этот трекер мы выдаем пешеходу.
Задачка отрисовать область по которой двигается пешеход, перевести её в кординаты.

Более наглядно, пешеход двигается по дорожке, по тратуару, местами по протоптанным тропам.
Стоит задача забить координатами широты и долготы весь тротуар по которому пошел пешеход. Расстояние тротуара зададим константой например ширина 8 метров (ну предположим что по проспекту пешеход идет). Т.е. проще говоря весь тротуар обозначить как геообласть.

Решение вижу таким:
1 Предполагаю, что пешеход двигается по центру тротуара.
2 Точки кординат точно сориентированы по времени и порядковым номерам, поэтому соединяя точки от номера к номеру, получаю вектор движения пешехода.
3 Строго параллельно вектору движения пешехода в перпендикулярных направлениях, в 4 метрах в обе стороны, откладываю "вектора призраки" и в точках сброса кординат, провожу перпендикуляры, для пересечения с"векторами призраками" таким образом получая "Построенную область".
Построенная область - это прямоугольник, который делится строго пополам на два равных, отрезком лежащим на векторе движения пешехода, между точками обозначенными сбросом кординат трекера.
Посмотрите пожалуйста вложение.


Кординаты точек:

1) - 49.789596, 73.111945
2) - 49.789768, 73.112266
3) - 49.789983, 73.111985
4) - 49.790184, 73.111574
5) - 49.790059, 73.111228

Подскажите пожалуйста как реализовать данную задумку, погуглив я нашел информацию о том что существуют специальные базы данных заточенные под выделение геообластей.
Например гугл подсказал, что в MySQL есть Spatial Data, а для постгри есть PostGIS.
Но увы, я никак не могу разобраться с примерами, их в сети на нашел на доступном, удобочитаемом русском, а с английским в данном случае очень туго, слишком техническое описание.
Если возможно на моем примере обозначьте пожалуйста как обработать данное решение.
С географией и геометрией у меня туговато.

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

Практическое применение:
Допустим за нашим пешеходом следом идет его друг, второй пешеход, идет просто по пятам, но уже не по центру тротуара, а допустим с правой стороны дорожки, пытается догнать, и что-то спросить например, ну или просто следит за тем куда тот направляется чтобы подловить и пошутить.
При этом у второго пешехода на устройстве есть база данных кординат по которым двигался предыдущий пешеход.
Раз в несколько секунд второй пешеход на своем трекере получает кординаты своего местоположения, по ним подключается к базе данных и спрашивает у неё, мои кординаты находятся в области пройденной первым пешеходом, или нет.
Разумеется кординаты посланные вторым пешеходом один в один не будут совпадать с кординатами первого, но вот внутри конкретной выделенной области (построенной по прямоугольнику) второй пешеход находиться определенно должен.
Поэтому база данных дает ответ Да, ваши кординаты в области движения второго пешехода, и например подтверждает их.
Прикреплено изображение (Нажмите для увеличения)
Vlozhenie.png

(Отредактировано автором: 02 Декабря, 2015 - 20:04:15)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB