创建视域 (栅格分析)

摘要

创建能够查看地面上对象的观察点区域。 输入观察点可以表示观察点(例如地面上的人或火警瞭望塔上的人)或被观察的对象(例如,风力涡轮机、水塔、车辆或其他人)。

观察点和被观察对象都距离地面向上有一定高度,这些高度可用于确定可见性。 例如,针对地面上 300 英尺的风力涡轮机和 6 英尺高的人计算得到的视域通常要比针对 200 英尺的涡轮机和 5 英尺高的人计算得到的视域大。

结果图层将记录输入表面栅格中每个像元位置对于输入观测点可见的次数。 不可见像元将得到 NoData 值。

插图

“创建视域”工具图示

使用情况

  • 当您登录到已针对 Raster Analysis 配置 ArcGIS Image ServerArcGIS Enterprise 门户时,可以使用此栅格分析门户工具。 工具运行时,ArcGIS Pro 将充当客户端,并且处理将在与 ArcGIS Enterprise 联合的服务器中进行。 门户工具接受来自门户的图层作为输入,并在门户中创建输出。

    输入栅格图层支持来自门户的图层、影像服务的 URI 或 URL 或创建影像服务器图层工具的输出。 输入要素图层可以是来自门户、URI 或要素服务 URL 的图层。 此工具不支持本地栅格数据或图层。 虽然可以使用本地要素数据和图层作为此门户工具的输入,但是最佳做法是使用门户的图层作为输入。

  • 每个像元中心的可见性都将通过目标和每个观察点之间的视线测试来确定。

参数

标注说明数据类型
输入高程表面

将用于计算视域的高程表面。

如果输入表面的垂直单位与水平单位存在差异(例如,高程值用英尺表示,但坐标系用米表示),则该表面必须具有确定的垂直坐标系。 这是因为工具使用垂直 (z) 和水平 (x,y) 单位来计算视域分析所需的 z 因子。 如果没有垂直坐标系且没有可用的 z 单位信息,则假定 z 单位与 x,y 单位相同。 结果是分析中将使用内部 Z 因子 1.0,从而导致意外的结果。

高程表面可为整型或浮点型。

Raster Layer; Image Service; String
观察点要素

计算视域时表示观察者位置的点要素。

Feature Set
输出名称

输出栅格服务的名称。

默认名称基于工具名称以及输入图层名称。 如果该图层名称已存在,则系统将提示您提供其他名称。

String
优化
(可选)

指定将用于计算视域的优化方法。

  • 速度处理速度将得到优化,以结果的某些精度为代价换取更好的性能。 这是默认设置。
  • 精度结果的精度将得到优化,以更长的处理时间为代价。
String
最大可视距离类型
(可选)

指定将确定最大可视距离的方式。

如果将类型由距离更改为字段,则最大可视距离参数将更改为最大可视距离字段

  • 距离将由您指定的值确定最大距离。 这是默认方法。
  • 字段各观察点位置的最大距离将由指定字段中的值确定。
String
最大可视距离
(可选)

将在可见区域计算停止处使用的中断距离。 超出此距离,就无法确定观察点和其他对象互相能否看见。

单位值为千米法定英里国际码国际英尺美国测量英里美国测量码美国测量英尺

默认值为 9 法定英里。

Linear Unit
最大可视距离字段
(可选)

包含每个观察点的最大可视距离的字段。 字段中包含的值的单位必须与输入高程表面的 x,y 单位相同。

最大可视距离是停止计算可见区域的中断距离。 超出此距离,就无法确定观察点和其他对象互相能否看见。

Field
最小可视距离类型
(可选)

指定将用于确定最小可视距离的方法。

如果将类型由距离更改为字段,则最小可视距离参数将更改为最小可视距离字段

  • 距离将由您指定的值确定最小距离。 这是默认方法。
  • 字段各观察点位置的最小距离将由指定字段中的值来决定。
String
最小可视距离
(可选)

开始计算可见区域时将使用的距离。 表面上小于此距离的像元在输出中不可见,但仍会妨碍最小可视距离和最大可视距离之间像元的可见性。

单位值为千米法定英里国际码国际英尺美国测量英里美国测量码美国测量英尺

Linear Unit
最小可视距离字段
(可选)

包含每个观察点的最小可视距离的字段。 字段中包含的值的单位必须与输入高程表面的 x,y 单位相同。

最小可视距离定义计算可见区域的起始点。 表面上小于此距离的像元在输出中不可见,但仍会妨碍最小可视距离和最大可视距离之间像元的可见性。

Field
可视距离为 3D 距离
(可选)

指定最小和最大可视距离参数值将采用 3D 距离还是 2D 距离测量。 2D 距离是观察者和目标之间最简单的线性距离,通过两者在海平面上的投影位置测得。 3D 距离可将两者的相对高度纳入考量范围,从而能够提供更为真实的值。

  • 选中 - 可视距离将采用 3D 距离测量。
  • 未选中 - 可视距离将采用 2D 距离测量。 这是默认设置。
Boolean
观察点高程类型
(可选)

指定将用于确定观察点高程的方式。

如果将类型由高程更改为字段,则观察点高程参数将更改为观察点高程字段

  • 高程观察点高程将由您指定的值确定。 这是默认方法。
  • 字段每个观察点位置的高程将由指定字段中的值来确定。
String
观察点高程
(可选)

将用于观察点位置的高程。

如果未指定此参数,则会使用双线性插值法从表面栅格中获取观察点高程。 如果为此参数设置了一个值,则该值将应用到所有观察点。 要为每个观察点指定不同的值,请将此参数设置为输入观察点要素中的某个字段。

单位值为千米法定英里国际码国际英尺美国测量英里美国测量码美国测量英尺

Linear Unit
观察点高程字段
(可选)

包含观察点高程的字段。 字段中包含的值的单位必须与输入高程表面的 z 单位相同。

如果未指定此参数,则会使用双线性插值法从表面栅格中获取观察点高程。

Field
观察点高度类型
(可选)

指定将用于确定观察点高度的方式。

如果将类型由高度更改为字段,则观察点高度参数将更改为观察点高度字段

  • 高度观察点高度将由您指定的值确定。 这是默认方法。
  • 字段每个观察点位置的高度将由指定字段中的值来确定。
String
观察点高度
(可选)

将用于观察点位置的高度。

单位值为千米法定英里国际码国际英尺美国测量英里美国测量码美国测量英尺

默认值为 6 国际英尺。

Linear Unit
观察点高度字段
(可选)

包含观察点高度的字段。 字段中包含的值的单位必须与输入高程表面的 z 单位相同。

Field
目标高度类型
(可选)

指定将用于确定目标高度的方式。

如果将类型由高度更改为字段,则目标高度参数将更改为目标高度字段

  • 高度目标高度将由您指定的值确定。 这是默认方法。
  • 字段每个目标的高度将由指定字段中的值来确定。
String
目标高度
(可选)

将用于确立可见性的地面上建筑物或人的高度。 结果视域为观察点可看到这些其他对象的区域。 反之亦然,其他对象也可以看到观察点。

单位值为千米法定英里国际码国际英尺美国测量英里美国测量码美国测量英尺

Linear Unit
目标高度字段
(可选)

包含目标高度的字段。 字段中包含的值的单位必须与输入高程表面的 z 单位相同。

Field
地平面以上输出名称
(可选)

地面以上 (AGL) 输出栅格的名称。 AGL 结果是一个栅格,其中每个像元值都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度(若不添加此高度,像元不可见)。 在输出栅格中为已可见的像元分配 0。

String
垂直错误
(可选)

表面高程值的不确定性量(均方根 (RMS) 误差)。 它是表示输入高程值预计误差的浮点值。

为此参数分配的值大于 0 时,输出可见性栅格将为浮点型。

Linear Unit
折射系数
(可选)

空气中可见光的折射系数。

默认值为 0.13。

Double
水平起始角
(可选)

水平扫描范围的起始角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 0。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String
水平终止角
(可选)

水平扫描范围的终止角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 360。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String
垂直上角
(可选)

扫描的(相对于水平面的)垂直角上限。 提供的值介于 -90 至 90 度之间,包括 90。 值可以是整型或浮点型。 默认值为 90(垂直向上)。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String
垂直下角
(可选)

扫描的(位于水平面下的)垂直角上限。 提供的值介于 -90 至 90 度之间,不包括 90。 值可以是整型或浮点型。 默认值为 -90(垂直向下)。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String

派生输出

标注说明数据类型
输出栅格

输出视域栅格。

Raster Layer
输出地平面以上栅格

地面以上输出栅格。

Raster Layer

arcpy.ra.CreateViewshed(inputElevationSurface, inputObserverFeatures, outputName, {optimizeFor}, {maximumViewingDistanceType}, {maximumViewingDistance}, {maximumViewingDistanceField}, {minimumViewingDistanceType}, {minimumViewingDistance}, {minimumViewingDistanceField}, {viewingDistanceIs3D}, {observersElevationType}, {observersElevation}, {observersElevationField}, {observersHeightType}, {observersHeight}, {observersHeightField}, {targetHeightType}, {targetHeight}, {targetHeightField}, {aboveGroundLevelOutputName}, {verticalError}, {refractivityCoefficient}, {horizontalStartAngle}, {horizontalEndAngle}, {verticalUpperAngle}, {verticalLowerAngle})
名称说明数据类型
inputElevationSurface

将用于计算视域的高程表面。

如果输入表面的垂直单位与水平单位存在差异(例如,高程值用英尺表示,但坐标系用米表示),则该表面必须具有确定的垂直坐标系。 这是因为工具使用垂直 (z) 和水平 (x,y) 单位来计算视域分析所需的 z 因子。 如果没有垂直坐标系且没有可用的 z 单位信息,则假定 z 单位与 x,y 单位相同。 结果是分析中将使用内部 Z 因子 1.0,从而导致意外的结果。

高程表面可为整型或浮点型。

Raster Layer; Image Service; String
inputObserverFeatures

计算视域时表示观察者位置的点要素。

Feature Set
outputName

输出栅格服务的名称。

默认名称基于工具名称以及输入图层名称。 如果该图层名称已存在,则系统将提示您提供其他名称。

String
optimizeFor
(可选)

指定将用于计算视域的优化方法。

  • SPEED处理速度将得到优化,以结果的某些精度为代价换取更好的性能。 这是默认设置。
  • ACCURACY结果的精度将得到优化,以更长的处理时间为代价。
String
maximumViewingDistanceType
(可选)

指定将确定最大可视距离的方式。

  • DISTANCE将由您指定的值确定最大距离。 这是默认方法。
  • FIELD各观察点位置的最大距离将由指定字段中的值确定。
String
maximumViewingDistance
(可选)

将在可见区域计算停止处使用的中断距离。 超出此距离,就无法确定观察点和其他对象互相能否看见。

单位值为 KilometersMetersMilesIntYardsIntFeetIntMilesYardsFeet

默认值为 9 法定英里。

Linear Unit
maximumViewingDistanceField
(可选)

包含每个观察点的最大可视距离的字段。 字段中包含的值的单位必须与输入高程表面的 x,y 单位相同。

最大可视距离是停止计算可见区域的中断距离。 超出此距离,就无法确定观察点和其他对象互相能否看见。

Field
minimumViewingDistanceType
(可选)

指定将用于确定最小可视距离的方法。

  • DISTANCE将由您指定的值确定最小距离。 这是默认方法。
  • FIELD各观察点位置的最小距离将由指定字段中的值来决定。
String
minimumViewingDistance
(可选)

开始计算可见区域时将使用的距离。 表面上小于此距离的像元在输出中不可见,但仍会妨碍最小可视距离和最大可视距离之间像元的可见性。

单位值为 KilometersMetersMilesIntYardsIntFeetIntMilesYardsFeet

Linear Unit
minimumViewingDistanceField
(可选)

包含每个观察点的最小可视距离的字段。 字段中包含的值的单位必须与输入高程表面的 x,y 单位相同。

最小可视距离定义计算可见区域的起始点。 表面上小于此距离的像元在输出中不可见,但仍会妨碍最小可视距离和最大可视距离之间像元的可见性。

Field
viewingDistanceIs3D
(可选)

指定最小和最大可视距离参数值将采用 3D 距离还是 2D 距离测量。 2D 距离是观察者和目标之间最简单的线性距离,通过两者在海平面上的投影位置测得。 3D 距离可将两者的相对高度纳入考量范围,从而能够提供更为真实的值。

  • 2D可视距离将采用 2D 距离测量。 这是默认设置。
  • 3D可视距离将采用 3D 距离测量。
Boolean
observersElevationType
(可选)

指定将用于确定观察点高程的方式。

  • ELEVATION观察点高程将由您指定的值确定。 这是默认方法。
  • FIELD每个观察点位置的高程将由指定字段中的值来确定。
String
observersElevation
(可选)

将用于观察点位置的高程。

如果未指定此参数,则会使用双线性插值法从表面栅格中获取观察点高程。 如果为此参数设置了一个值,则该值将应用到所有观察点。 要为每个观察点指定不同的值,请将此参数设置为输入观察点要素中的某个字段。

单位值为 KilometersMetersMilesIntYardsIntFeetIntMilesYardsFeet

Linear Unit
observersElevationField
(可选)

包含观察点高程的字段。 字段中包含的值的单位必须与输入高程表面的 z 单位相同。

如果未指定此参数,则会使用双线性插值法从表面栅格中获取观察点高程。

Field
observersHeightType
(可选)

指定将用于确定观察点高度的方式。

  • HEIGHT观察点高度将由您指定的值确定。 这是默认方法。
  • FIELD每个观察点位置的高度将由指定字段中的值来确定。
String
observersHeight
(可选)

将用于观察点位置的高度。

单位值为 KilometersMetersMilesIntYardsIntFeetIntMilesYardsFeet

默认值为 6 国际英尺。

Linear Unit
observersHeightField
(可选)

包含观察点高度的字段。 字段中包含的值的单位必须与输入高程表面的 z 单位相同。

Field
targetHeightType
(可选)

指定将用于确定目标高度的方式。

  • HEIGHT目标高度将由您指定的值确定。 这是默认方法。
  • FIELD每个目标的高度将由指定字段中的值来确定。
String
targetHeight
(可选)

将用于确立可见性的地面上建筑物或人的高度。 结果视域为观察点可看到这些其他对象的区域。 反之亦然,其他对象也可以看到观察点。

单位值为 KilometersMetersMilesIntYardsIntFeetIntMilesYardsFeet

Linear Unit
targetHeightField
(可选)

包含目标高度的字段。 字段中包含的值的单位必须与输入高程表面的 z 单位相同。

Field
aboveGroundLevelOutputName
(可选)

地面以上 (AGL) 输出栅格的名称。 AGL 结果是一个栅格,其中每个像元值都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度(若不添加此高度,像元不可见)。 在输出栅格中为已可见的像元分配 0。

String
verticalError
(可选)

表面高程值的不确定性量(均方根 (RMS) 误差)。 它是表示输入高程值预计误差的浮点值。

为此参数分配的值大于 0 时,输出可见性栅格将为浮点型。

Linear Unit
refractivityCoefficient
(可选)

空气中可见光的折射系数。

默认值为 0.13。

Double
horizontalStartAngle
(可选)

水平扫描范围的起始角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 0。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String
horizontalEndAngle
(可选)

水平扫描范围的终止角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 360。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String
verticalUpperAngle
(可选)

扫描的(相对于水平面的)垂直角上限。 提供的值介于 -90 至 90 度之间,包括 90。 值可以是整型或浮点型。 默认值为 90(垂直向上)。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String
verticalLowerAngle
(可选)

扫描的(位于水平面下的)垂直角上限。 提供的值介于 -90 至 90 度之间,不包括 90。 值可以是整型或浮点型。 默认值为 -90(垂直向下)。

可以在输入观察点要素中选择一个字段,或者可以提供一个数值。

String

派生输出

名称说明数据类型
outputRaster

输出视域栅格。

Raster Layer
outputAboveGroundLevelRaster

地面以上输出栅格。

Raster Layer

代码示例

CreateViewshed 示例 1(Python 窗口)

本示例将使用指定表面和观察点来创建视域影像服务。

import arcpy

arcpy.ra.CreateViewshed(
    "https://myserver/rest/services/elevation/ImageServer", 
    "https://myserver/rest/services/destination/FeatureServer/0", 
    "outview1", "SPEED", "DISTANCE", "9 Miles", "#", "DISTANCE",
    "0 Meters", "#", "2D", "ELEVATION", "#", "#", "HEIGHT",
    "6 Feet", "#", "HEIGHT", "3 Feet", "#", "outagl1")
CreateViewshed 示例 2(独立脚本)

本示例将使用指定表面和观察点来创建视域影像服务。

#---------------------------------------------------------------------------
# Name: CreateViewshed_example02.py
# Description: Creates a viewshed image service raster from given surface
#   and observer points.
#
# Requirements: ArcGIS Image Server

# Import system modules
import arcpy

# Set local variables
inSurface = "https://myserver/rest/services/elevation/ImageServer"
inObservers = "https://myserver/rest/services/destination/FeatureServer/0"
outputViewshed = "outview1"
optimizeFor = "Speed"
maxDistType = "Distance"
maxDist = "9 Miles"
maxDistField = "#"
minDistType = "Distance"
minDist = "0 Miles"
minDistField = "#"
distanceIs3D = "2D"
obsElevationType = "Elevation"
obsElevation = "#"
obsElevationField = "#"
obsOffsetType = "Height"
obsOffset = "6 Feet"
obsOffsetField = "#"
surfOffsetType = "Height"
surfOffset = "3 Feet"
surfOffsetField = "#"
outputAgl = "outagl1"

# Execute Create Viewshed raster analysis tool
arcpy.ra.CreateViewshed(
    inSurface, inObservers, outputViewshed, optimizeFor,
    maxDistType, maxDist, maxDistField, minDistType, minDist,
    minDistField, distanceIs3D, obsElevationType, obsElevation,
    obsElevationField, obsOffsetType, obsOffset, obsOffsetField,
    surfOffsetType, surfOffset, surfOffsetField, outputAgl)

许可信息

  • Basic: 需要 ArcGIS Image Server
  • Standard: 需要 ArcGIS Image Server
  • Advanced: 需要 ArcGIS Image Server

相关主题