描述
创建能够查看地面上对象的观察点区域。输入观察点可以表示观察点(例如地面上的人或火警瞭望塔上的人)或被观察的对象(例如,风力涡轮机、水塔、车辆或其他人)。
观察点和被观察对象都距离地面向上有一定高度,这些高度可用于确定可见性。例如,针对地面上 300 英尺的风力涡轮机和 6 英尺高的人计算得到的视域通常要比针对 200 英尺的涡轮机和 5 英尺高的人计算得到的视域大。
结果图层将记录输入表面栅格中每个像元位置对于输入观测点可见的次数。不可见像元将得到 NoData 值。
插图
使用方法
此栅格分析门户工具将在您登录到 ArcGIS Enterprise 时可用,其中门户包含一个 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 (可选) | 用于计算视域的优化方法。
| String |
maximumViewingDistanceType (可选) | 选择用于确定最大可视距离的方法。
| String |
maximumViewingDistance (可选) | 这就是停止计算可见区域的中断距离。超出此距离,就无法确定观察点和其他对象互相能否看见。 单位可以是千米、米、英里、码或英尺。 默认单位为英里。 | Linear Unit |
maximumViewingDistanceField (可选) | 您可以用此字段指定每个观察点的最大可视距离。字段中包含的值的单位必须与输入高程表面的 XY 单位相同。 最大可视距离是停止计算可见区域的中断距离。超出此距离,就无法确定观察点和其他对象互相能否看见。 | Field |
minimumViewingDistanceType (可选) | 选择用于确定最小可视距离的方法。
| String |
minimumViewingDistance (可选) | 这就是开始计算可见区域的距离。表面上小于此距离的像元在输出中不可见,但仍会妨碍最小可视距离和最大可视距离之间像元的可见性。 单位可以是千米、米、英里、码或英尺。 默认单位是米。 | Linear Unit |
minimumViewingDistanceField (可选) | 您可以用此字段指定每个观察点的最小可视距离。字段中包含的值的单位必须与输入高程表面的 XY 单位相同。 最小可视距离定义计算可见区域的起始点。表面上小于此距离的像元在输出中不可见,但仍会妨碍最小可视距离和最大可视距离之间像元的可见性。 | Field |
viewingDistanceIs3D (可选) | 指定最小可视距离和最大可视距离参数是采用三维方式还是更简单的二维方式进行测量。2D 距离是观察者和目标之间最简单的线性距离,通过两者在海平面上的投影位置测得。3D 距离可将两者的相关高度纳入考量范围,从而能够得出更为真实的值。
| Boolean |
observersElevationType (可选) | 选择用于确定观察点高程的方法。
| String |
observersElevation (可选) | 这是观察点位置的高程。 如果未指定此参数,则会使用双线性插值法从表面栅格中获取观察点高程。如果为此参数设置了一个值,则该值将应用到所有观察点。要为每个观察点指定不同的值,请将此参数设置为输入观察点要素中的某个字段。 单位可以是千米、米、英里、码或英尺。 默认单位是米。 | Linear Unit |
observersElevationField (可选) | 您可以用此字段指定观察点高程。字段中包含的值的单位必须与输入高程表面的 Z 单位相同。 如果未指定此参数,则会使用双线性插值法从表面栅格中获取观察点高程。 | Field |
observersHeightType (可选) | 选择用于确定观察点高度的方法。
| String |
observersHeight (可选) | 这是用于观察点位置的高度。 单位可以是千米、米、英里、码或英尺。 默认单位是米。 | Linear Unit |
observersHeightField (可选) | 您可以用此字段指定观察点高度。字段中包含的值的单位必须与输入高程表面的 Z 单位相同。 | Field |
targetHeightType (可选) | 选择用于确定目标高度的方法。
| String |
targetHeight (可选) | 这是地面上建筑物或人的高度,用于确立可见性。结果视域为观察点可看到这些其他对象的区域。反之亦然,其他对象也可以看到观察点。 单位可以是千米、米、英里、码或英尺。 默认单位是米。 | Linear Unit |
targetHeightField (可选) | 您可以用此字段指定目标高度。字段中包含的值的单位必须与输入高程表面的 Z 单位相同。 | Field |
aboveGroundLevelOutputName (可选) | 地平面以上 (AGL) 栅格输出结果的名称。AGL 结果是一个栅格,其中每个像元值都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度(若不添加此高度,像元不可见)。在此输出栅格中为已可见的像元分配 0。 | String |
派生输出
名称 | 说明 | 数据类型 |
outputRaster | 输出视域栅格。 | 栅格图层 |
outputAboveGroundLevelRaster | 地面以上输出栅格。 | 栅格图层 |
代码示例
本示例使用给定表面和观察点来创建视域影像服务。
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")
本示例使用给定表面和观察点来创建视域影像服务。
#---------------------------------------------------------------------------
# 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