Skyline 从6开始开发接口发生了很大的变化,特别显著的变化就是增加了 Analysis接口。 原来做相关功能,为了省事一直都是直接调用菜单号来应付了事。最近更新了版本后发现这个接口里面的内容越来越多很有必要深入研究一下。
首先看一下Analysis 中最简单的接口
CreateThreatDome创建威胁分析。 里面数据类型很简单,最后返回
ITerrainThreatDome65
对象,可以根据参数进行修改。
IPosition65 Position
//Radius 半径
double Range = 2000.0;
//Ray Sapcing 扫描的间隔
double AngularStep = 20.0;
//Sample Interval 采样距离
double RadialStep = 100.0;
//Direction 方向
double Direction = 1;
//Scan Field 扫描的范围
double HorizontalFOV = 360;
//Elevation Angle 高程角度和地面直接的夹角
double ElevationAngle = 1;
CreateThreatDome(Position, Range, AngularStep, RadialStep, Direction, HorizontalFOV, ElevationAngle, "0xFF00FF00" , "", "ThreatDome");
CreateViewshed接口创建一个视域分析对象,可以在其中查看 视域分析结果,效果相当不错。
IPosition65 ViewerPosition;
//视域分析的视角
double FieldOfView ;
//采样间隔
double SampleInterval ;
//采样角度间隔
double RaySpacing;
//定义一定高度以上的对象才镜像扫描
double TargetHeightAboveGround ;
//在洪水分析中在讲一下时间对象的定义
object TimeStart ;
object TimeEnd ;
CreateViewshed(ViewerPosition, FieldOfView, SampleInterval, RaySpacing, TargetHeightAboveGround, TimeStart, TimeEnd, "" , "Viewshed");
被遮挡的视域可以获取进行分析
CreateViewshedOnRoute可以设定一条路线 根据路线的采样点类分析在改点上某高度的视域。 这个功能可以用来在实际场景中排兵布阵检查盲点用。
//一个坐标字符串的数组
ILineString Route ;
//分析类型,可以自己尝试一下区别
MultipleViewshedAnalysisType AnalysisType = MultipleViewshedAnalysisType .MVT_CUMULATIVE_VIEWSHED_ON_ROUTE;
//观察高度
double ViewerHeight;
//采样点的采样半径
double Distance ;
//采样间隔
double SampleInterval ;
//采样角度间隔
double RaySpacing ;
//视域分析点的采样间隔
double DistanceBetweenWaypoints ;
object TimeStart ;
object TimeEnd ;
CreateViewshedOnRoute(Route, AnalysisType, ViewerHeight, Distance, SampleInterval, RaySpacing, DistanceBetweenWaypoints, TimeStart, TimeEnd);
同样分析结果可以得到。
以上的分析结果都是通过采样间隔来计算出来的,如果要更加精确那就需要更小的采样间隔,计算的时间也就更长。
感兴趣的skyline开发者可以自己尝试一下这几个开发接口。如需要以上的代码
请下载。