基于点云生成楼层平面图 (Indoors)

摘要

创建包含根据输入点云数据生成的 2D 折线要素的折线要素类 在使用数据填充 Indoors 工作空间以协助创建地面感知型地图和场景时,可以优化此工具的输出并将其用作输入。

使用情况

  • 此工具接受 LAS 文件作为输入,并创建表示垂直延伸的建筑(例如墙壁、门和柱子)的 2D 折线要素。 使用此工具作为更大工作流程的一部分,从点云生成平面图

  • 您可以优化该工具创建的输出折线要素类,用作将要素导入室内数据集工具的输入。

  • 当输入点云有定义的坐标系时,坐标系参数会自动设置。 如果输入点云没有定义坐标系,请使用坐标系参数指定一个。 如果输入点云定义的坐标系不正确,您可以从输入点云的图层属性中更改它。 该工具在处理点云坐标和创建输出线要素时使用指定的坐标系。

  • 该工具每次运行都会处理一个设施点的一个楼层。 如果输入点云数据覆盖多个设施点或楼层,请使用以下处理边界参数来限制处理区域:

    • 使用 Z 范围参数将处理限制在单个楼层或某个楼层的高程子集。
    • 使用范围参数将处理限制为单个设施点或设施点的子集。 范围参数优先于范围环境设置

  • 为了提高生成的输出的质量,请使用 Z 范围参数将处理限制在 z 值范围内,排除大多数家具、固定装置、照明和其他非房间边界要素的物体。 您可以探索局部场景中的点云数据,确定要包含的 z 值的最佳范围。 下图显示了如何使用 1-2 米的 z 范围避开家具和天花板固定装置:

    带有家具和天花板固定装置的房间以及 z 范围值
    设置最小 z 值为 1、最大 z 值为 2,避免捕捉房间中的家具和天花板固定装置。

  • 使用简化线参数来拉直生成的输出折线并减少折点的数量。 选中此参数时,将使用折线压缩算法对生成的折线进行规范化,然后删除对于保留有效区域不必要的多余折点。

  • 使用短要素容差参数从数据中删除短折线要素。 小于或等于指定公差的要素将被移除,除非它们距离其他要素 0.05 米以内。 使用零值以避免删除短要素,这有助于在稀疏点云数据中可视化墙壁位置。

  • 在处理过程中,此工具可能会使用输入点云的 KeyPoint 分类字段。 如果是这样,则该工具将在工具运行结束时将字段值恢复为原始值。

参数

标注说明数据类型
输入点云

包含将生成折线要素的点云数据的输入 LAS 文件或数据集。

LAS Dataset Layer
输出线要素

将创建用于存储由 LAS 数据生成的要素的折线要素类。

如果未指定工作空间,则将使用临时工作空间。

Feature Class
坐标系
(可选)

输入 LAS 数据和输出折线要素类的坐标系。 默认情况下,将使用 LAS 数据中定义的水平和垂直坐标系的坐标系。

Spatial Reference
输出 Z 值
(可选)

将分配给生成的折线要素的 z 值。 默认值为 0。

您可以以米或英尺为单位指定值。 该工具将自动将该值转换为使用数据垂直坐标系的测量单位。

Linear Unit
简化线
(可选)

指定在处理过程中是否使用折线压缩算法简化输出折线,以便在移除保留有效区域所不需要的多余折点之前规范化生成的折线。

  • 选中 - 将简化线。 这是默认设置。
  • 取消选中 - 不简化线。
Boolean
短要素容差
(可选)

删除短要素的容差(以米或国际英尺为单位)。 默认值为 1 米。

使用值 0 来绕过保留短要素。

Linear Unit
Z 范围
(可选)

输入点云的一个或多个 z 范围。 生成输出折线要素时将分析指定 z 范围内的点。

如果未指定值,则将使用输入点云数据中存在的全部 z 值范围。

Value Table
范围
(可选)

待评估数据的范围。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。
  • 图层范围 图层 - 范围基于活动地图图层。 选择可用图层或者使用所有图层中的数据范围选项。 每个地图图层具有以下选项:

    • 所有要素 全选 - 所有要素的范围。
    • 选定要素 基于选定要素的区域 - 选定要素的范围。
    • 可见要素 Extent Indicator - 可见要素的范围。

  • 浏览 浏览 - 范围将基于数据集。
  • 输入的交集 相交 - 范围将为所有输入的相交范围。
  • 输入的并集 联合 - 范围将为所有输入的合并范围。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围和坐标系复制到剪贴板。
    • 粘贴范围 粘贴 - 从剪贴板粘贴范围和坐标系。 如果剪贴板不包含坐标系,则范围将使用地图的坐标系。
  • 重置范围 重置 - 将范围重置为默认值。

当手动提供坐标时,坐标必须为数值,并且位于活动地图的坐标系中。 地图可能使用与提供的坐标不同的显示单位。 在南纬和西经坐标中使用负号。

Extent

arcpy.indoors.GenerateFloorPlanFromPointCloud(in_point_cloud, out_line_features, {coordinate_system}, {output_z_value}, {simplify}, {short_feature_tolerance}, {z_ranges}, {extent})
名称说明数据类型
in_point_cloud

包含将生成折线要素的点云数据的输入 LAS 文件或数据集。

LAS Dataset Layer
out_line_features

将创建用于存储由 LAS 数据生成的要素的折线要素类。

如果未指定工作空间,则将使用临时工作空间。

Feature Class
coordinate_system
(可选)

输入 LAS 数据和输出折线要素类的坐标系。 默认情况下,将使用 LAS 数据中定义的水平和垂直坐标系的坐标系。

Spatial Reference
output_z_value
(可选)

将分配给生成的折线要素的 z 值。 默认值为 0。

您可以以米或英尺为单位指定值。 该工具将自动将该值转换为使用数据垂直坐标系的测量单位。

Linear Unit
simplify
(可选)

指定在处理过程中是否使用折线压缩算法简化输出折线,以便在移除保留有效区域所不需要的多余折点之前规范化生成的折线。

  • SIMPLIFY将简化线。 这是默认设置。
  • NO_SIMPLIFY不简化线。
Boolean
short_feature_tolerance
(可选)

删除短要素的容差(以米或国际英尺为单位)。 默认值为 1 米。

使用值 0 来绕过保留短要素。

Linear Unit
z_ranges
[z_ranges,...]
(可选)

输入点云的一个或多个 z 范围。 生成输出折线要素时将分析指定 z 范围内的点。

如果未指定值,则将使用输入点云数据中存在的全部 z 值范围。

Value Table
extent
(可选)

待评估数据的范围。

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标以 x-min,y-min,x-max,y-max 的顺序表示。
Extent

代码示例

GenerateFloorPlanFromPointCloud 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 GenerateFloorPlanFromPointCloud 函数。

import arcpy
arcpy.indoors.GenerateFloorPlanFromPointCloud(r"C:\Indoors\PointcloudData\Floor1scan.LAS",
                                              r"C:\Indoors\ExampleData.gdb\OutputPolylines",
                                              "", "", "", "", "", "",
                                              )
GenerateFloorPlanFromPointCloud 示例 2(Python 窗口)

以下独立脚本演示了如何使用 GenerateFloorPlanFromPointCloud 函数。

#Name: Indoors_GenerateFloorPlanFromPointCloud_example2.py
#Description: Generates polyline floor plan features from LAS point cloud data

import arcpy

# Check Out Extensions
arcpy.CheckOutExtension('Indoors')
arcpy.CheckOutExtension('3D')
arcpy.CheckOutExtension('Spatial')  # or 'ImageAnalyst'

# Set Local Variables
in_point_cloud = r"C:\data\Building L - All_Floors.las"
out_line_features = r"C:\data\FloorPlans.gdb\Building_L_East_Floor_1"
coordinate_system = 'PROJCS["NAD_1983_2011_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],
                            PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],
                            PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-116.25],
                            PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],
                            UNIT["Meter",1.0],AUTHORITY["EPSG",6425]]'
output_z_value = "4.25 Meters"
simplify = "SIMPLIFY"
short_feature_tolerance = "25.4 Millimeters"
z_ranges = "1 1.8;2.2 3.2"
extent="DEFAULT"


# Call the function
arcpy.gp.GenerateFloorPlanFromPointCloud(
    in_point_cloud,
    out_line_features,
    coordinate_system,
    output_z_value,
    simplify,
    short_feature_tolerance,
    z_ranges,
    extent
)

# Check In Extensions
arcpy.CheckInExtension('Indoors')
arcpy.CheckInExtension('3D')
arcpy.CheckInExtension('Spatial')

许可信息

  • Basic: 否
  • Standard: 否
  • Advanced: 需要 3D Analyst 和 ArcGIS Indoors Pro 或 ArcGIS Indoors Maps. 也需要 Spatial Analyst 或 Image Analyst

相关主题