通视性 (3D Analyst)

摘要

可确定使用潜在障碍物并由 3D 要素和表面组合定义的视线可见性。

使用情况

  • 该工具通过添加新字段或更新现有字段来修改视线输入参数值。 可以在可见字段名参数中指定字段名。 可见视线的字段值为 1,阻碍视线的字段值为 0。 如果您没有对输入要素的写入权限或不想修改输入数据,则可创建输入的副本以与该工具一同使用。 有关详细信息以及避免数据被意外更改的策略,请参阅不创建输出数据集的工具

  • 只有输入线的端点用于定义观察点和目标点。 理想的视线应该是直线,包括两个折点,分别代表用于确定可见性的观测点和目标位置。

  • 如果观察点位置由点要素定义且可见性目标由存储在其他要素类中的数据表示,则考虑使用构造视线工具。

  • 由于进行障碍物检查不必投影数据(可能多次),如果所有输入都在同一空间参考中进行,工具将运行得更加快速。 这适用于相同空间参考中的所有障碍物;视线的空间参考并不十分重要,因为它们易于投影。

  • 可以使用通视分析工具以确定不可见视线的阻碍位置。

参数

标注说明数据类型
视线

将确定其可见性的 3D 视线。

Feature Layer
障碍物

为视线提供潜在障碍物的网格和表面数据集。 可以通过多面体要素、集成网格场景图层、TIN 数据集和栅格表面的任意组合来定义障碍物。

Feature Layer; TIN Layer; Raster Layer; Mosaic Layer; Scene Layer; File
可见字段名
(可选)

要存储可见性结果的字段的名称。 生成的值 0 表示视线的起点和终点相互不可见。 值 1 表示视线的起点和终点相互可见。 默认字段名称为 VISIBLE。 如果字段已存在,则会覆盖该字段的值。

String

派生输出

标注说明数据类型
输出要素类

更新后的 3D 视线。

Feature Layer

arcpy.ddd.Intervisibility(sight_lines, obstructions, {visible_field})
名称说明数据类型
sight_lines

将确定其可见性的 3D 视线。

Feature Layer
obstructions
[obstructions,...]

为视线提供潜在障碍物的网格和表面数据集。 可以通过多面体要素、集成网格场景图层、TIN 数据集和栅格表面的任意组合来定义障碍物。

Feature Layer; TIN Layer; Raster Layer; Mosaic Layer; Scene Layer; File
visible_field
(可选)

要存储可见性结果的字段的名称。 生成的值 0 表示视线的起点和终点相互不可见。 值 1 表示视线的起点和终点相互可见。 默认字段名称为 VISIBLE。 如果字段已存在,则会覆盖该字段的值。

String

派生输出

名称说明数据类型
out_feature_class

更新后的 3D 视线。

Feature Layer

代码示例

Intervisibility 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。


import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Intervisibility_3d("sightlines.shp", ["3dbuildings.shp", "topo_tin"], "Visibility")
Intervisibility 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

此脚本演示如何使用以表面和建筑物要素表示的障碍物来从观察点和目标线计算视线的通视性。

# Import system modules
import arcpy

# Set environments
arcpy.env.workspace = 'C:/data'

print("Constructing Sightlines")
arcpy.ddd.ConstructSightLines("Observers.shp", "Targets.shp", "sightlines.shp", 
                              observer_height_field='Shape.Z', target_height_field='Shape.Z')

print("Calculating Intervisibility")
arcpy.ddd.Intervisibility("Sightlines.shp", obstructions=["DTM_Tin", "data.gdb/buildings"],
                          visible_field="Visibility")