public class VisibilityAnalyst extends Object
可视性分析又称通视分析,通常包含点间可视性分析(判断两点间是否相互可见)、可视域分析(分析给定点位置上可视的范围)和通视线分析(分析两点间视线上的可视和不可视部分)。点间可视性分析又分为两点间可视性分析和多点间可视性分析;可视域分析分为单点可视域分析和多点可视域分析。
可视性分析对军事活动、微波通讯和旅游规划开发等都有重要应用价值。如布设阵地、设置观察哨所、铺设通信线路等,有时还需要分析不可见区域,如低空侦察飞机在飞行时,要尽可能避免敌方雷达的捕捉,飞机要选择雷达盲区飞行;又如设置雷达站、电视台的发射站等通讯设施;以及旅游线路开发、航海导航等,可视性分析均能够起到辅助规划和决策的作用。
限定符和类型 | 方法和说明 |
---|---|
static void |
addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(
SteppedEvent )的监听器。 |
static DatasetGrid |
calculateViewShed(DatasetGrid sourceDataset,
Point3D viewPoint,
double startAngle,
double viewAngle,
double viewRadius,
Datasource targetDatasource,
String targetDatasetName)
|
static DatasetGrid |
calculateViewShed(DatasetGrid sourceDataset,
Point3D viewPoint,
double startAngle,
double viewAngle,
double viewRadius,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
单点可视域分析,即分析单个观察点的可视范围。
|
static DatasetGrid |
calculateViewShed(DatasetGrid sourceDataset,
Point3Ds viewPoints,
double[] startAngles,
double[] viewAngles,
double[] viewRadiuses,
Datasource targetDatasource,
String targetDatasetName,
ViewShedType viewShedType)
|
static DatasetGrid |
calculateViewShed(DatasetGrid sourceDataset,
Point3Ds viewPoints,
double[] startAngles,
double[] viewAngles,
double[] viewRadiuses,
Datasource targetDatasource,
String targetDatasetName,
ViewShedType viewShedType,
SteppedListener... listeners)
多点可视域分析,即分析多个观察点的可视范围,可以为共同可视域或非共同可视域。
|
static GridAnalystSetting |
getAnalystSetting()
返回栅格分析的环境设置对象。
|
static VisibleResult |
isVisible(DatasetGrid sourceDataset,
Point3D fromPoint,
Point3D toPoint)
两点可视性分析,即判断两点之间是否相互可见。
|
static VisibleResult[] |
isVisible(DatasetGrid sourceDataset,
Point3Ds fromPoints,
Point3Ds toPoints)
多点可视性分析,即判断多点之间是否可两两通视。
|
static GeoLine[] |
lineOfSight(DatasetGrid sourceDataset,
Point3D fromPoint,
Point3D toPoint)
计算两点间的通视线,即根据地形计算观察点到目标点的视线上的可视部分和不可视部分。
|
static DatasetVector |
radarShieldAngle(DatasetGrid[] sourceDatasets,
Point3D viewPoint,
double startAngle,
double viewAngle,
double viewRadius,
Datasource targetDatasource,
String targetDatasetName,
double interval)
|
static DatasetVector |
radarShieldAngle(DatasetGrid[] sourceDatasets,
Point3D viewPoint,
double startAngle,
double viewAngle,
double viewRadius,
Datasource targetDatasource,
String targetDatasetName,
double interval,
SteppedListener... listeners)
根据多个地形图和雷达中心点,返回各方位上最大的雷达遮蔽角的点数据集。
|
static DatasetVector |
radarShieldAngle(DatasetGrid sourceDataset,
Point3D viewPoint,
double startAngle,
double viewAngle,
double viewRadius,
Datasource targetDatasource,
String targetDatasetName,
double interval)
|
static DatasetVector |
radarShieldAngle(DatasetGrid sourceDataset,
Point3D viewPoint,
double startAngle,
double viewAngle,
double viewRadius,
Datasource targetDatasource,
String targetDatasetName,
double interval,
SteppedListener... listeners)
根据地形图和雷达中心点,返回各方位上最大的雷达遮蔽角的点数据集。
|
static void |
removeSteppedListener(SteppedListener l)
移除一个进度条事件(
SteppedEvent )的监听器。 |
static void |
setAnalystSetting(GridAnalystSetting gridAnalystSetting)
设置栅格分析的环境设置对象。
|
public static GridAnalystSetting getAnalystSetting()
public static void setAnalystSetting(GridAnalystSetting gridAnalystSetting)
gridAnalystSetting
- 栅格分析的环境设置对象。public static VisibleResult isVisible(DatasetGrid sourceDataset, Point3D fromPoint, Point3D toPoint)
基于栅格表面,判断给定的观察点与被观察点之间是否可见,称为两点间可视性分析。两点间可视性分析的结果有两种:可视与不可视。该方法返回一个 VisibleResult
对象,该对象用于返回两点间可视性分析的结果,即两点是否可视,如果不可视,会返回第一个阻碍视线的障碍点,还会给出该障碍点的建议高程值以使该点不再阻碍视线。
注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。
sourceDataset
- 指定的用于可视性分析的栅格表面数据集。fromPoint
- 指定的用于可视性分析的起始点,即观察点。toPoint
- 指定的用于可视性分析的终止点,即被观察点。VisibleResult
类对象中。public static GeoLine[] lineOfSight(DatasetGrid sourceDataset, Point3D fromPoint, Point3D toPoint)
依据地形的起伏,计算从观察点看向目标点的视线上哪些段可视或不可视,称为计算两点间的通视线。观察点与目标点间的这条线称为通视线。通视线可以帮助了解在给定点能够看到哪些位置,可服务于旅游线路规划、雷达站或信号发射站的选址,以及布设阵地、观察哨所设置等军事活动。
观察点和目标点的高程由其 Z 值确定。当观察点或目标点的 Z 值小于栅格表面上对应单元格的高程值时,则使用该单元格的栅格值作为观察点或目标点的高程来计算通视线。
计算两点间通视线的结果为一个二维线对象数组,该数组的第 0 个元素为可视线对象,第 1 个元素为不可视线对象。该数组的长度可能为 1 或 2,这是因为不可视线对象有可能不存在,此时结果数组只包含一个对象,即可视线对象。由于可视线(或不可视线)可能不连续,因此可视线或不可视线对象有可能是复杂线对象。
sourceDataset
- 指定的栅格表面数据集。fromPoint
- 指定的观察点,是一个三维点对象。toPoint
- 指定的目标点,是一个三维点对象。public static VisibleResult[] isVisible(DatasetGrid sourceDataset, Point3Ds fromPoints, Point3Ds toPoints)
多点可视性分析,是根据栅格表面,计算观察点与被观察点之间是否两两通视。两点间可视性分析请参阅另一重载方法 isVisible
方法的介绍。
如果有 m 个观测点和 n 个被观测点,将有 m * n 种观测组合。分析的结果通过一个 VisibleResult
对象数组返回,每个 VisibleResult
对象包括对应的两点是否可视,如果不可视,会给出第一个障碍点,以及该点的建议高程值以使该点不再阻碍视线。
注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。
sourceDataset
- 指定的用于可视性分析的栅格表面数据集。fromPoints
- 指定的用于可视性分析的起始点,即观察点。toPoints
- 指定的用于可视性分析的终止点,即被观察点。VisibleResult
类对象数组中。@Deprecated public static DatasetGrid calculateViewShed(DatasetGrid sourceDataset, Point3D viewPoint, double startAngle, double viewAngle, double viewRadius, Datasource targetDatasource, String targetDatasetName)
VisibilityAnalyst.calculateViewShed(DatasetGrid, Point3D, double, double, double, Datasource, String, SteppedListener...)
替换。单点可视域分析是在栅格表面数据集上,对于给定的一个观察点,查找其在给定的范围内(由观察半径、观察角度决定)所能观察到的区域,也就是给定点的通视区域范围。分析的结果为一个栅格数据集,其中可视区域保持原始栅格表面的栅格值,其他区域为无值。
如下图所示,图中绿色的点为观察点,叠加在原始栅格表面上的蓝色区域即为对其进行可视域分析的结果。
注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。
sourceDataset
- 指定的用于可视域分析的栅格表面数据集。viewPoint
- 指定的观察点位置。startAngle
- 指定的起始观察角度,单位为度,以正北方向为 0 度,顺时针方向旋转。指定为负值或大于 360 度,将自动换算到 0 到 360 度范围内。viewAngle
- 指定的观察角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,起始角度+观察角度]。例如起始角度为 90 度,观察角度为 90 度,那么实际观察的角度范围是从 90 度到 180 度。但注意,当指定为 0 或负值时,无论起始角度为何值,观察角度范围都为 0 到 360 度。viewRadius
- 指定的观察半径。该值限制了视野范围的大小,若观测半径小于等于 0 时,表示无限制。单位为米。targetDatasource
- 指定的用于存储结果数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。public static DatasetGrid calculateViewShed(DatasetGrid sourceDataset, Point3D viewPoint, double startAngle, double viewAngle, double viewRadius, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
单点可视域分析是在栅格表面数据集上,对于给定的一个观察点,查找其在给定的范围内(由观察半径、观察角度决定)所能观察到的区域,也就是给定点的通视区域范围。分析的结果为一个栅格数据集,其中可视区域保持原始栅格表面的栅格值,其他区域为无值。
如下图所示,图中绿色的点为观察点,叠加在原始栅格表面上的蓝色区域即为对其进行可视域分析的结果。
注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。
sourceDataset
- 指定的用于可视域分析的栅格表面数据集。viewPoint
- 指定的观察点位置。startAngle
- 指定的起始观察角度,单位为度,以正北方向为 0 度,顺时针方向旋转。指定为负值或大于 360 度,将自动换算到 0 到 360 度范围内。viewAngle
- 指定的观察角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,起始角度+观察角度]。例如起始角度为 90 度,观察角度为 90 度,那么实际观察的角度范围是从 90 度到 180 度。但注意,当指定为 0 或负值时,无论起始角度为何值,观察角度范围都为 0 到 360 度。viewRadius
- 指定的观察半径。该值限制了视野范围的大小,若观测半径小于等于 0 时,表示无限制。单位为米。targetDatasource
- 指定的用于存储结果数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid calculateViewShed(DatasetGrid sourceDataset, Point3Ds viewPoints, double[] startAngles, double[] viewAngles, double[] viewRadiuses, Datasource targetDatasource, String targetDatasetName, ViewShedType viewShedType)
VisibilityAnalyst.calculateViewShed(DatasetGrid, Point3Ds, double[], double[], double[], Datasource, String, ViewShedType, SteppedListener...)
替换。多点可视域分析,是根据栅格表面,对给定的观察点集合中每一个观察点进行可视域分析,然后根据指定的可视域类型,计算所有观察点的可视域的交集(称为“共同可视域”)或者并集(称为“非共同可视域”),并将结果输出到一个栅格数据集中,其中可视区域保持原始栅格表面的栅格值,其他区域为无值。
如下图所示,图中绿色的点为观察点,叠加在原始栅格表面上的蓝色区域即为对其进行可视域分析的结果。左图展示了三个观察点的共同可视域,右图则是三个观察点的非共同可视域。
注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。
sourceDataset
- 指定的用于可视域分析的栅格表面数据集。viewPoints
- 指定的观察点集合。startAngles
- 指定的起始观察角度集合,与观察点一一对应。单位为度,以正北方向为 0 度,顺时针方向旋转。指定为负值或大于 360 度,将自动换算到 0 到 360 度范围内。viewAngles
- 指定的观察角度集合,与观察点和起始观察角度一一对应,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,起始角度+观察角度]。例如起始角度为 90 度,观察角度为 90 度,那么实际观察的角度范围是从 90 度到 180 度。viewRadiuses
- 指定的观察半径集合,与观察点一一对应。该值限制了视野范围的大小,若观测半径小于等于 0 时,表示无限制。单位为米。targetDatasource
- 指定的用于存储结果数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。viewShedType
- 指定的可视域的类型,可以是多个观察点的可视域的交集,也可以是多个观察点可视域的并集。public static DatasetGrid calculateViewShed(DatasetGrid sourceDataset, Point3Ds viewPoints, double[] startAngles, double[] viewAngles, double[] viewRadiuses, Datasource targetDatasource, String targetDatasetName, ViewShedType viewShedType, SteppedListener... listeners)
多点可视域分析,是根据栅格表面,对给定的观察点集合中每一个观察点进行可视域分析,然后根据指定的可视域类型,计算所有观察点的可视域的交集(称为“共同可视域”)或者并集(称为“非共同可视域”),并将结果输出到一个栅格数据集中,其中可视区域保持原始栅格表面的栅格值,其他区域为无值。
如下图所示,图中绿色的点为观察点,叠加在原始栅格表面上的蓝色区域即为对其进行可视域分析的结果。左图展示了三个观察点的共同可视域,右图则是三个观察点的非共同可视域。
注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。
sourceDataset
- 指定的用于可视域分析的栅格表面数据集。viewPoints
- 指定的观察点集合。startAngles
- 指定的起始观察角度集合,与观察点一一对应。单位为度,以正北方向为 0 度,顺时针方向旋转。指定为负值或大于 360 度,将自动换算到 0 到 360 度范围内。viewAngles
- 指定的观察角度集合,与观察点和起始观察角度一一对应,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,起始角度+观察角度]。例如起始角度为 90 度,观察角度为 90 度,那么实际观察的角度范围是从 90 度到 180 度。viewRadiuses
- 指定的观察半径集合,与观察点一一对应。该值限制了视野范围的大小,若观测半径小于等于 0 时,表示无限制。单位为米。targetDatasource
- 指定的用于存储结果数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。viewShedType
- 指定的可视域的类型,可以是多个观察点的可视域的交集,也可以是多个观察点可视域的并集。listeners
- 用于接收进度条事件的监听器。public static void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public static void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。@Deprecated public static DatasetVector radarShieldAngle(DatasetGrid sourceDataset, Point3D viewPoint, double startAngle, double viewAngle, double viewRadius, Datasource targetDatasource, String targetDatasetName, double interval)
VisibilityAnalyst.radarShieldAngle(DatasetGrid, Point3D, double, double, double, Datasource, String, double, SteppedListener...)
替换。sourceDataset
- 删格数据集或DEM。不支持影像数据集。viewPoint
- 三维点对象,表示雷达中心点的坐标和雷达中心与地面的高度。startAngle
- 雷达方位起始角度,单位为度,以正北方向为 0 度,顺时针方向旋转。范围为0到360度。如果设置为小于0,默认值为0;如果该值大于360,默认为360。viewAngle
- 雷达方位终止角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,终止角度)。该值必须大于起始角度。如果该值小于等于0,表示[0,360)。viewRadius
- 观察范围,单位为米。如果设置为小于0,表示整个地形图范围。targetDatasource
- 目标数据源。如传入null,默认为地形数据所在数据源。targetDatasetName
- 结果数据集名称。interval
- 方位角的间隔,即每隔多少度返回一个雷达遮蔽点。该值必须大于0且小于360。public static DatasetVector radarShieldAngle(DatasetGrid sourceDataset, Point3D viewPoint, double startAngle, double viewAngle, double viewRadius, Datasource targetDatasource, String targetDatasetName, double interval, SteppedListener... listeners)
sourceDataset
- 删格数据集或DEM。不支持影像数据集。viewPoint
- 三维点对象,表示雷达中心点的坐标和雷达中心与地面的高度。startAngle
- 雷达方位起始角度,单位为度,以正北方向为 0 度,顺时针方向旋转。范围为0到360度。如果设置为小于0,默认值为0;如果该值大于360,默认为360。viewAngle
- 雷达方位终止角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,终止角度)。该值必须大于起始角度。如果该值小于等于0,表示[0,360)。viewRadius
- 观察范围,单位为米。如果设置为小于0,表示整个地形图范围。targetDatasource
- 目标数据源。如传入null,默认为地形数据所在数据源。targetDatasetName
- 结果数据集名称。interval
- 方位角的间隔,即每隔多少度返回一个雷达遮蔽点。该值必须大于0且小于360。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetVector radarShieldAngle(DatasetGrid[] sourceDatasets, Point3D viewPoint, double startAngle, double viewAngle, double viewRadius, Datasource targetDatasource, String targetDatasetName, double interval)
VisibilityAnalyst.radarShieldAngle(DatasetGrid[], Point3D, double, double, double, Datasource, String, double, SteppedListener...)
替换。sourceDatasets
- 删格数据集或DEM集合。不支持影像数据集。viewPoint
- 三维点对象,表示雷达中心点的坐标和雷达中心与地面的高度。startAngle
- 雷达方位起始角度,单位为度,以正北方向为 0 度,顺时针方向旋转。范围为0到360度。如果设置为小于0,默认值为0;如果该值大于360,默认为360。viewAngle
- 雷达方位终止角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,终止角度)。该值必须大于起始角度。如果该值小于等于0,表示[0,360)。viewRadius
- 观察范围,单位为米。如果设置为小于0,表示整个地形图范围。targetDatasource
- 目标数据源。targetDatasetName
- 结果数据集名称。interval
- 方位角的间隔,即每隔多少度返回一个雷达遮蔽点。该值必须大于0且小于360。public static DatasetVector radarShieldAngle(DatasetGrid[] sourceDatasets, Point3D viewPoint, double startAngle, double viewAngle, double viewRadius, Datasource targetDatasource, String targetDatasetName, double interval, SteppedListener... listeners)
sourceDatasets
- 删格数据集或DEM集合。不支持影像数据集。viewPoint
- 三维点对象,表示雷达中心点的坐标和雷达中心与地面的高度。startAngle
- 雷达方位起始角度,单位为度,以正北方向为 0 度,顺时针方向旋转。范围为0到360度。如果设置为小于0,默认值为0;如果该值大于360,默认为360。viewAngle
- 雷达方位终止角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,终止角度)。该值必须大于起始角度。如果该值小于等于0,表示[0,360)。viewRadius
- 观察范围,单位为米。如果设置为小于0,表示整个地形图范围。targetDatasource
- 目标数据源。targetDatasetName
- 结果数据集名称。interval
- 方位角的间隔,即每隔多少度返回一个雷达遮蔽点。该值必须大于0且小于360。listeners
- 用于接收进度条事件的监听器。Copyright © 2021–2024 SuperMap. All rights reserved.