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 :: Версия для печати :: Работа с географическими данными вопрос дилетанта
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Работа с географическими данными вопрос дилетанта

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

1. lostandleft - 02 Декабря, 2015 - 20:03:07 - перейти к сообщению
Здравствуйте.
Подскажите пожалуйста как решить задачу по выделению географических кординат в области.

Условие: Предположим, что у нас есть 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.
Но увы, я никак не могу разобраться с примерами, их в сети на нашел на доступном, удобочитаемом русском, а с английским в данном случае очень туго, слишком техническое описание.
Если возможно на моем примере обозначьте пожалуйста как обработать данное решение.
С географией и геометрией у меня туговато.

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

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

 

Powered by ExBB FM 1.0 RC1