博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三维分析之通视分析
阅读量:4161 次
发布时间:2019-05-26

本文共 1551 字,大约阅读时间需要 5 分钟。

nannan

        通视分析是三维GIS中常用的分析功能,用于判断三维场景中任意两点之间的通视情况。可根据在 3D 空间中相对于某表面或多面体要素类提供的障碍的位置,计算观察点与被观察点之间的通视性,沿着这些点之间的视线确定可见性。

通视分析示意图如下:
在这里插入图片描述
        通视分析需要用户指定观察点和被观察点,观察点与被观察点是一对多的关系,一个观察点可对应多个被观察点进行分析,一个被观察点只能对应一个观察点进行通视分析。分析结果输出线将沿着输入视线的可见与不可见部分进行划分,绿色表示可见,红色表示不可见。

操作步骤:

1.在场景中添加需进行通视分析的模型数据,在“三维分析”选项卡上的“空间分析”组中,单击“通视分析”按钮,弹出“三维空间分析”面板。

在这里插入图片描述
2. 将鼠标移至场景中,当鼠标状态变为+在这里插入图片描述 时,即可在数据表面单击鼠标选取观察点。
3.添加一个观察点之后,鼠标状态会自动切换为拾取被观察点的状态,可继续添加一个或多个被观察点。在移动鼠标绘制被观察点时,可实时显示观察点与鼠标所在位置处的通视情况。
4.同时,在“三维空间分析”面板中,选中“通视分析”结点,单击工具栏中的“添加”按钮,可在场景的适当位置单击拾取添加观察点;选中通视分析结点目录下的某个观察点结点,单击工具栏中的“添加”按钮,可在场景的适当位置单击拾取该观察点对应的被观察点。
5.添加观察点与被观察点后,会实时分析观察点与对应被观察点之间的可见性。
在这里插入图片描述
6.全选被观察点后,勾选高亮显示障碍物,场景中会高亮显示障碍物,自动弹出障碍物相关属性信息。
在这里插入图片描述

以下代码示范.Net组件如何在三维场景中进行通视性分析:

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/

你可能感兴趣的文章
EasySwift/YXJOnePixelLine 极其方便的画出真正的一个像素的线
查看>>
Ubuntu Linux系统下apt-get命令详解
查看>>
ubuntu 16.04 下重置 MySQL 5.7 的密码(忘记密码)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
HTTPS那些事 用java实现HTTPS工作原理
查看>>
oracle函数trunc的使用
查看>>
MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
查看>>
java反编译
查看>>
Class.forName( )你搞懂了吗?——转
查看>>
jarFile
查看>>
EJB与JAVA BEAN_J2EE的异步消息机制
查看>>
数学等于号是=那三个横杠是什么符
查看>>
HTTP协议详解
查看>>
java多线程中的join方法详解
查看>>
java abstract修饰符
查看>>
数组分为两部分,使得其和相差最小
查看>>
有趣的排序——百度2017春招
查看>>
二叉树的最近公共祖先LCA
查看>>
数组中累加和为定值K的最长子数组长度
查看>>
素数对--腾讯2017校招编程
查看>>