按邻域查找 LAS 点 (3D Analyst)

摘要

用于标识已启用 z 值要素的三维邻域内的 LAS 点,并提供重新分类这些点的选项。

使用情况

  • 此工具使用包含指定搜索半径内的 LAS 点计数的字段更新输入要素。 此工具可以生成的点数没有限制,因此请考虑避免使用极大的搜索距离。

  • 您可通过在图层过滤器设置中选择分类代码、分类标记和返回值的任意组合来使 LAS 数据集图层对所显示和处理的 LAS 点进行限制。 过滤器的定义可在图层属性对话框中或在创建 LAS 数据集图层工具中实现。

  • 使用单点几何生成输出点要素时,将向该输出中添加名为 DIST3D 的字段(该输出将包含从点到最近输入要素的 3D 距离)。

参数

标注说明数据类型
输入 LAS 数据集

将要处理的 LAS 数据集。

LAS Dataset Layer
输入 3D 要素

将使用其邻域识别 LAS 点的 3D 点、线、面或多面体要素。

Feature Layer
搜索半径

用于评估输入要素周围是否存在 LAS 点的距离,可使用线性距离或输入要素属性表中的数值字段提供。 如果搜索半径从单位为未知的字段或线性距离中获得,则将使用输入要素 XY 空间参考的线性单位。

Linear Unit; Field
计数字段

该字段名称将添加到输入要素的属性表中,并将使用每个要素邻域中的 LAS 点数进行填充。 默认字段名称为 COUNT

String
输出要素类
(可选)

表示输入要素指定邻域中检测到的 LAS 点的点要素。

Feature Class
输出几何类型
(可选)

指定输出点要素的几何,这些点要素表示输入要素指定邻域中找到的 LAS 点。

  • 多点每一行中都将具有多个点的多点要素。
  • 每个识别的 LAS 点都具有唯一行的单点要素。
String
新的类代码
(可选)

用于对在输入要素搜索半径内发现的点进行重分类的类代码值。

Long
计算统计数据
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • 选中 - 将计算统计数据。 这是默认设置。
  • 未选中 - 不计算统计数据。
Boolean
更新金字塔
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • 选中 - LAS 数据集金字塔将更新。 这是默认设置。
  • 未选中 - LAS 数据集金字塔不会更新。
Boolean

派生输出

标注说明数据类型
更新后的输入 LAS 数据集

更新后的 LAS 数据集。

LAS Dataset Layer
更新后的输入 3D 要素

更新后的输入 3D 要素。

Feature Layer

arcpy.ddd.LocateLasPointsByProximity(in_las_dataset, in_features, search_radius, count_field, {out_features}, {geometry}, {class_code}, {compute_stats}, {update_pyramid})
名称说明数据类型
in_las_dataset

将要处理的 LAS 数据集。

LAS Dataset Layer
in_features

将使用其邻域识别 LAS 点的 3D 点、线、面或多面体要素。

Feature Layer
search_radius

用于评估输入要素周围是否存在 LAS 点的距离,可使用线性距离或输入要素属性表中的数值字段提供。 如果搜索半径从单位为未知的字段或线性距离中获得,则将使用输入要素 XY 空间参考的线性单位。

Linear Unit; Field
count_field

该字段名称将添加到输入要素的属性表中,并将使用每个要素邻域中的 LAS 点数进行填充。 默认字段名称为 COUNT

String
out_features
(可选)

表示输入要素指定邻域中检测到的 LAS 点的点要素。

Feature Class
geometry
(可选)

指定输出点要素的几何,这些点要素表示输入要素指定邻域中找到的 LAS 点。

  • MULTIPOINT每一行中都将具有多个点的多点要素。
  • POINT每个识别的 LAS 点都具有唯一行的单点要素。
String
class_code
(可选)

用于对在输入要素搜索半径内发现的点进行重分类的类代码值。

Long
compute_stats
(可选)

指定是否将计算 LAS 数据集引用的 .las 文件的统计数据。 计算统计数据时会为每个 .las 文件提供一个空间索引,从而提高了分析和显示性能。 统计数据还可通过将 LAS 属性(例如分类代码和返回信息)显示限制为 .las 文件中存在的值来提升过滤和符号系统体验。

  • COMPUTE_STATS将计算统计数据。 这是默认设置。
  • NO_COMPUTE_STATS不计算统计数据。
Boolean
update_pyramid
(可选)

指定修改类代码后,LAS 数据集金字塔是否会更新。

  • UPDATE_PYRAMIDLAS 数据集金字塔将更新。 这是默认设置。
  • NO_UPDATE_PYRAMIDLAS 数据集金字塔不会更新。
Boolean

派生输出

名称说明数据类型
out_las_dataset

更新后的 LAS 数据集。

LAS Dataset Layer
derived_features

更新后的输入 3D 要素。

Feature Layer

代码示例

LocateLasPointsByProximity 示例 1(Python 窗口)

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

import arcpy
from arcpy import env

arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.ddd.LocateLasPointsByProximity('lidar.lasd', 'powerlines.shp', 
                                     search_radius="10 Feet", 
                                     count_field="Near_Pts",
                                     out_features="located_pts.shp")
LocateLasPointsByProximity 示例 2(独立脚本)

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

'''****************************************************************************
Name: Classify Noise Points
Description: Updates classification of version 1.0 LAS files to conform to
             the standardized class codes introduced in the 1.1 specifications.
             The code is designed for use as a script tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback

# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
lasd = arcpy.GetParameterAsText(2)
reclassList = arcpy.GetParameterAsText(3) #List of values '<oldCode> <newCode>'
calcStats = arcpy.GetParameter(4)

try:
    # Execute CreateLasDataset
    arcpy.management.CreateLasDataset(inLas, lasd, folder_recursion=recursion)
    # Execute Locate Outliers
    outlier_pts = 'in_memory/outliers'
    arcpy.ddd.LocateOutliers(lasd, out_feature_class=outlier_pts, 
                            apply_hard_limit='Apply_Hard_Limit', 
                            absolute_z_min=-15, absolute_z_max=680, 
                            apply_comparison_filter='Apply_Comparison_Filter',
                            z_tolerance=0, slope_tolerance=150, 
                            exceed_tolerance_ratio=0.5, outlier_cap=3000)
    # Execute ChangeLasClassCodes
    arcpy.ddd.LocateLasPointsByProximity(lasd, in_features=outlier_pts, 
                                         search_radius='0.5 Centimeters', 
                                         class_code=18)
    # Report messages
    arcpy.GetMessages(0)

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

相关主题