Як знайти будівлі (полігони), які може бачити користувач із заданого місця (точки) та орієнтації (діапазон кутів)?


10

Я хотів би знайти набір будівель, які я бачу з заданого місця (точка -лат, lng) та орієнтації (інтервал кутів) + безумовно, із заданою глибиною (наприклад, 100 метрів). В ідеалі я хотів би отримати щось подібне: від кута 1 до кута2 користувач може бачити будівлю 1, від кута 2 до кута3 ми бачимо будівлю 2.

Дані = Полігони, що представляють будівлі міста у формі файла.

вхід: місцеположення та орієнтація (діапазон кута) для відображення візуального сприйняття людини.

вихід :
Версія 1 - список {BuildingID}
Версія 2 (краща) - список {BuildingID, набір видимих ​​сегментів для кожної будівлі (фасад будинків)}
Версія 3 (ідеальний вихід) - список {buildingID, кутові діапазони }. (наприклад, від кута 1 до кута2, користувач може бачити будівлю 1, від кута 2 до кута3, ми бачимо будівлю 2 тощо).

Панель інструментів, яку я можу використовувати: PostGis, QGis, ruby, R

початок рішення для виводу v1:
- створення трикутника, що представляє спрощений зоровий діапазон користувача для заданої точки та орієнтації (інтервал кута) та з певним радіусом / глибиною (наприклад, 100 метрів)
- обчислювальний перетин із будівлями (наприклад, ST_INTERSECTION ) і зоровий обсяг. але будівля може приховати ще одне, тому чистий перетин між візуальним розмахом і будівлями може не додати видимих ​​будівель. це питання потрібно вирішити.

оновлення: потенційне рішення 2 - створення трикутника, що представляє спрощений зоровий діапазон користувача для заданої точки та орієнтації (інтернвал кута) та з певним радіусом / глибиною (наприклад, 100 метрів) - створення n променів (ЛІНІЯ) під різними кутами заповнення областей.
- перетворення всіх будівель (ПОЛІГОНІВ) у СЕГМЕНТИ / ЛІНІЇ
- для кожного променя, що знаходить найближчий СЕГМЕНТ і відповідний будівельний ID . (ST_DISTANCE, ST_DWithin)
на цьому етапі, тому ми повинні мати список променів та відповідний ідентифікатор будівлі.
- тоді ми могли б узагальнити цей список {діапазони кута, пов’язані з ідентифікацією будівлі}.

Якась ідея про більш ефективний спосіб зробити?

Відповіді:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.