如何找到用户从给定位置(点)和方向(角度范围)可以看到的建筑物(多边形)?


10

我想检索从给定位置(点-lat,lng)和方向(角度间隔)+当然可以给定深度(例如100米)看到的一组建筑物。理想情况下,我希望输出如下内容:从角度1到angle2,用户可以看到建筑物1,从角度2到angle3,我们可以看到建筑物2。

数据=在shapefile中代表城市建筑物的多边形。

输入:代表一个人的视觉感知的位置和方向(角度范围)。

输出
版本1-{BuildingID}
版本2(更好)的列表-{BuildingID,每个建筑物(建筑物的立面)可见段的集合}
的列表版本3(理想输出)-{buildingID,角度范围的列表}。(例如,从角度1到angle2,用户可以看到建筑物1,从角度2到angle3,我们看到建筑物2,依此类推。)

我可以使用的工具箱:PostGis,QGis,ruby,R

输出v1解决方案的开始:
-创建一个三角形,代表给定点和方向(角度的间隔)并具有一定的半径/深度(例如100米)的用户的简化视觉范围
-计算与建筑物的交点(例如ST_INTERSECTION )和视觉范围。但是建筑物可以隐藏另一座建筑物,因此视觉范围和建筑物之间的纯交集可能不会添加可见建筑物。这个问题需要解决。

更新:潜在解决方案2- 创建一个三角形,代表给定点和方向(角度的间隔)并具有一定的半径/深度(例如100米)的用户的简化视觉范围-创建不同角度的n条光线(LINE)填补范围。
-将所有建筑物(POLYGONS)转换为SEGMENTS / LINES-
为每条射线找到最接近的SEGMENT和相关buildingID。(ST_DISTANCE,ST_DWithin)
在这个阶段,因此我们应该具有光线列表和相关的建筑物ID。
-然后我们可以汇总此列表{角度范围,相关建筑物ID}。

关于更有效的方法有什么想法吗?

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.