Определить объекты с одной и с другой стороны дороги

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
zozo
Новоприбывший
Сообщения: 2
Зарегистрирован: 07 окт 2012, 17:31
Репутация: 0

Определить объекты с одной и с другой стороны дороги

Сообщение zozo » 07 окт 2012, 17:34

Добрый день!

Подскажите, пожалуйста, в какую сторону копать?
У меня есть база(postgis), в которой много разных объектов с координатми (точками). Как правило, объекты расположены вдоль дорог (polylines). Мне нужно каким-то образом определять объекты, которые с одной и с другой стороны дороги. Причём "область допуска" нужно иметь возможность регулировать. Т.е. есть линия дороги и хочу получить список объектов справа от дороги и слева (считаем линию улицы направленной и право и лево определить можно).

Эту задачу можно свести к получению из линии многоугольника в форме полосы с одной стороны дороги и с другой нужной ширины. Система у меня написана на ruby, но это не принципиально, если это просто делается другими средствами, можно и что-то другоe использовать попробовать.

На данный момент я вижу некрасивое решение. Т.к. всё это будет относительно локально (улица вряд ли больше, скажем, 10км), то все эти рассчёты можно производить просто в неугловых координатах - погрешности будут весьма не большими (как я могу судить) и для моих задач несущественными. Однако, это, конечно, велосипед с костылём, но пока не нашёл примеров как можно такие расчёты реализовать на угловых gps-координатах. Вернее, если засесть и вспоминать чему учили в инстутите, рано или поздно, я это осилю, но боюсь это будет слишком дорогое решение. Наверняка есть библиотеки, реализующие эту логику.

Заранее большое всем спасибо за советы!

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Определить объекты с одной и с другой стороны дороги

Сообщение trir » 07 окт 2012, 18:10

Нужна линейная система координат
Берёшь первые две точки из дороги, первая точка - начало координат, по второй определяешь поворот. В этой новой СК определяешь координаты целевых точек, если X>больше длины сегмента - переходишь к следующему сегменту, знак Y определяет положение относительно дороги.
Это можно реализовать и на SQL', в виде хранимой функции, а результат возвращать как point

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Определить объекты с одной и с другой стороны дороги

Сообщение Александр Мурый » 07 окт 2012, 21:24

А почему бы не использовать встроенные функции PostGIS?
Идея, может быть, дурацкая, но всё же:
-- строим вокруг линии и всех точек общую выпуклую оболочку (ST_ConvexHull);
-- режем полигон на две части линией (ST_Split ??), назначаем получившимся двум полигонам сторону (левый/правый);
-- выбираем точки, попадающие в "левый" или "правый" от дороги полигоны (ST_Contains ??)
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Определить объекты с одной и с другой стороны дороги

Сообщение rhot » 07 окт 2012, 22:17

amuriy, какая функция будет отвечать за назначение сторон полигонам?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Определить объекты с одной и с другой стороны дороги

Сообщение Александр Мурый » 07 окт 2012, 22:27

rhot писал(а):amuriy, какая функция будет отвечать за назначение сторон полигонам?
Мозг :) Очень может быть, что я чего-то недопонял в исходной задаче.
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Определить объекты с одной и с другой стороны дороги

Сообщение rhot » 07 окт 2012, 22:30

а серьёзно: если найти эту функцию, то проблема была бы решена...
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

zozo
Новоприбывший
Сообщения: 2
Зарегистрирован: 07 окт 2012, 17:31
Репутация: 0

Re: Определить объекты с одной и с другой стороны дороги

Сообщение zozo » 09 окт 2012, 09:45

Вероятно, я не очень хорошо описал задачу.
Попробую уточнить. Вот набросал схему: Изображение

Итак, у нас есть какая-то исходная линия (улица) ABCD, мы знаем, что A - начало, D - конец улицы. Нам нужно получить два полигона - слева от линии и справа (если смотреть из первой точки A в сторону второй B). Т.е. получается, что левый полигон это ABCDD1C1B1A1 и правый - ABCDD2C2B2A2.

Эту задачу можно свести к задаче получения точек B1/B2, имея точки A, B, С и направления (лево/право). Слева получаем B1, справа - B2. Эту задачу я почти знаю, как решить, если всё это делать в обычной системе координат. Как я предполагаю, абстрагироватся от угловой системы при таких масштабах (десяток км) можно без больших погрешностей - я прав или ошибаюсь?

Ну и почему-то мне кажется, что вся эта математика уже реализована и неразумно писать велосипед, хотелось бы её использовать.

Я может быть не совсем верно понял ваши ответы, тогда был бы весьма признателен за комментарии, но как я понял, это несколько не то. Думаю, после моего пояснения моя задача стала яснее.

Огромное спасибо за ответы!

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Определить объекты с одной и с другой стороны дороги

Сообщение Boris » 15 окт 2012, 03:02

с математической точки зрения "право" и "лево" у линии не бывает. может быть выше и ниже или правее и левее относительно каких-то осей. в вашем случае - если предположить, что направление вы знаете и оно идет слева в вверх на право, то правое будет иметь сумму координат оси "восток" больше, чем лево. я бы сказал вместо "восток" - X, но я же не могу угадать к какой "синагоге" вы принадлежите - к ГИС или к геодезистам.

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя