本文共 1551 字,大约阅读时间需要 5 分钟。
nannan
通视分析是三维GIS中常用的分析功能,用于判断三维场景中任意两点之间的通视情况。可根据在 3D 空间中相对于某表面或多面体要素类提供的障碍的位置,计算观察点与被观察点之间的通视性,沿着这些点之间的视线确定可见性。
通视分析示意图如下: 通视分析需要用户指定观察点和被观察点,观察点与被观察点是一对多的关系,一个观察点可对应多个被观察点进行分析,一个被观察点只能对应一个观察点进行通视分析。分析结果输出线将沿着输入视线的可见与不可见部分进行划分,绿色表示可见,红色表示不可见。1.在场景中添加需进行通视分析的模型数据,在“三维分析”选项卡上的“空间分析”组中,单击“通视分析”按钮,弹出“三维空间分析”面板。
2. 将鼠标移至场景中,当鼠标状态变为+ 时,即可在数据表面单击鼠标选取观察点。 3.添加一个观察点之后,鼠标状态会自动切换为拾取被观察点的状态,可继续添加一个或多个被观察点。在移动鼠标绘制被观察点时,可实时显示观察点与鼠标所在位置处的通视情况。 4.同时,在“三维空间分析”面板中,选中“通视分析”结点,单击工具栏中的“添加”按钮,可在场景的适当位置单击拾取添加观察点;选中通视分析结点目录下的某个观察点结点,单击工具栏中的“添加”按钮,可在场景的适当位置单击拾取该观察点对应的被观察点。 5.添加观察点与被观察点后,会实时分析观察点与对应被观察点之间的可见性。 6.全选被观察点后,勾选高亮显示障碍物,场景中会高亮显示障碍物,自动弹出障碍物相关属性信息。public void VisibilityAnalyst(SceneControl sceneControl){ // 设置交互模式为三维通视分析模式 sceneControl.Action = Action3D.Intervisibility; // 设置通视性分析的场景为三维控件的场景。 VisibilityAnalyst3D.Scene = sceneControl.Scene; // 观察点 Point3D viewPoint = new Point3D(116.101074944241,40.6654658434974,853.498245092109); // 目标点 Point3D targetPoint = new Point3D(116.112775633765, 40.7851918021846, 1020.92712477595); // 判断两点知否通视,并保存分析结果到通视分析结果对象 VisibleResult3D Vres = VisibilityAnalyst3D.IsVisible(viewPoint, targetPoint); // 如果两点不通视,则将不通视线和通视线绘制到场景跟踪层 if (!Vres.Visible) { sceneControl.Scene.TrackingLayer.Add(Vres.LineVisible, "pass"); sceneControl.Scene.TrackingLayer.Add(Vres.LineInvisible, "notpass"); } // 如果两点通视,则将通视线绘制到跟踪层 else { sceneControl.Scene.TrackingLayer.Add(Vres.LineVisible, "visible"); }}
转载地址:http://zivxi.baihongyu.com/