Sightline
替换。@Deprecated public abstract class VisibilityAnalyst3D extends Object
public static void setScene(Scene value)
value
- 待分析的场景对象。public static Scene getScene()
public static VisibleResult3D isVisible(Point3D viewPoint, Point3D targetPoint)
通视分析是三维GIS中常用的分析功能,用于判断三维场景中任意两点之间的通视情况。
通视分析需要用户指定观察点和目标点,分析的结果保存在 VisibleResult3D
对象中,包含了是否通视、通视线对象、不通视线对象以及障碍点的信息。
通视分析示意图:
分析结果如下图所示:
viewPoint
- 指定的观察点对象。targetPoint
- 指定的目标点对象。public void visibilityAnalyst(SceneControl sceneControl) { // 设置交互模式为三维通视分析模式 sceneControl.setAction(Action3D.INTERVISIBILITY); // 设置通视性分析的场景为三维控件的场景 VisibilityAnalyst3D.setScene(sceneControl.getScene()); // 观察点 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.isVisible()){ sceneControl.getScene().getTrackingLayer().add(vres.getLineInvisible(), "pass"); sceneControl.getScene().getTrackingLayer().add(vres.getLineInvisible(), "notpass"); } // 如果两点通视,则将通视线绘制到跟踪层 else{ sceneControl.getScene().getTrackingLayer().add(vres.getLineInvisible(), "visible"); } }
Copyright © 2021–2024 SuperMap. All rights reserved.