创建视域 (栅格分析)

描述

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

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

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

插图

创建视域工具

使用方法

  • 此栅格分析门户工具将在您登录到 ArcGIS Enterprise “了解 ArcGIS Enterprise 门户中的分析”链接 时可用,其中门户包含一个 ArcGIS Image Server “什么是 ArcGIS Image Server”链接,此链接专为 Raster Analysis “配置和部署栅格分析”链接 配置。调用该工具后,ArcGIS Pro 将充当客户端,处理将在与 ArcGIS Enterprise 联合的服务器中进行。门户工具接受来自门户的图层作为输入,并在门户中创建输出。

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

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

语法

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

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

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

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

Raster Layer; Image Service; String
inputObserverFeatures

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

Feature Set
outputName

输出栅格服务的名称。

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

String
optimizeFor
(可选)

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

  • SPEED此方法可优化处理速度,牺牲一些精度以获得更高的性能。这是默认设置。
  • ACCURACY此方法可用来优化结果的精度,代价是需要更长的处理时间。
String
maximumViewingDistanceType
(可选)

选择用于确定最大可视距离的方法。

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

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

单位可以是千米、米、英里、码或英尺。

默认单位为英里。

Linear Unit
maximumViewingDistanceField
(可选)

您可以用此字段指定每个观察点的最大可视距离。字段中包含的值的单位必须与输入高程表面的 XY 单位相同。

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

Field
minimumViewingDistanceType
(可选)

选择用于确定最小可视距离的方法。

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

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

单位可以是千米、米、英里、码或英尺。

默认单位是米。

Linear Unit
minimumViewingDistanceField
(可选)

您可以用此字段指定每个观察点的最小可视距离。字段中包含的值的单位必须与输入高程表面的 XY 单位相同。

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

Field
viewingDistanceIs3D
(可选)

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

  • 2D可视距离在 2D 距离中测得。这是默认设置。
  • 3D可视距离在 3D 距离中测得。
Boolean
observersElevationType
(可选)

选择用于确定观察点高程的方法。

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

这是观察点位置的高程。

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

单位可以是千米、米、英里、码或英尺。

默认单位是米。

Linear Unit
observersElevationField
(可选)

您可以用此字段指定观察点高程。字段中包含的值的单位必须与输入高程表面的 Z 单位相同。

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

Field
observersHeightType
(可选)

选择用于确定观察点高度的方法。

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

这是用于观察点位置的高度。

单位可以是千米、米、英里、码或英尺。

默认单位是米。

Linear Unit
observersHeightField
(可选)

您可以用此字段指定观察点高度。字段中包含的值的单位必须与输入高程表面的 Z 单位相同。

Field
targetHeightType
(可选)

选择用于确定目标高度的方法。

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

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

单位可以是千米、米、英里、码或英尺。

默认单位是米。

Linear Unit
targetHeightField
(可选)

您可以用此字段指定目标高度。字段中包含的值的单位必须与输入高程表面的 Z 单位相同。

Field
aboveGroundLevelOutputName
(可选)

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

String

派生输出

名称说明数据类型
outputRaster

输出视域栅格。

栅格图层
outputAboveGroundLevelRaster

地面以上输出栅格。

栅格图层

代码示例

CreateViewshed 示例 1(Python 窗口)

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

import arcpy

arcpy.CreateViewshed_ra(
    "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.CreateViewshed_ra(
    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

相关主题