描述
用于标识已启用 z 值要素的三维邻域内的 LAS 点,并提供重新分类这些点的选项。
使用方法
此工具使用包含指定搜索半径内的 LAS 点计数的字段更新输入要素。此工具可以生成的点数没有限制,因此请考虑避免使用极大的搜索距离。
-
您可通过在图层过滤器设置中选择分类代码、分类标记和返回值的任意组合来使 LAS 数据集图层对所显示和处理的 LAS 点进行限制。过滤器的定义可通过图层属性对话或创建 LAS 数据集图层工具实现。
使用单点几何生成输出点要素时,将向该输出中添加名为 DIST3D 的字段(该输出将包含从点到最近输入要素的 3D 距离)。
语法
arcpy.3d.LocateLasPointsByProximity(in_las_dataset, in_features, search_radius, count_field, {out_features}, {geometry}, {class_code}, {compute_stats})
参数 | 说明 | 数据类型 |
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 点。
| String |
class_code (可选) | 用于对在输入要素搜索半径内发现的点进行重分类的类代码值。 | Long |
compute_stats (可选) | 指定是否应计算 LAS 数据集引用的 LAS 文件的统计数据。计算统计数据时会为每个 LAS 文件提供一个空间索引,从而提高了分析和显示性能。统计数据还可通过将 LAS 属性(如分类代码和返回信息)显示限制为 LAS 文件中存在的值来提升过滤和符号系统体验。
| Boolean |
派生输出
名称 | 说明 | 数据类型 |
out_las_dataset | 已更新的 LAS 数据集。 | LAS 数据集图层 |
derived_features | 更新后的输入 3D 要素。 | 要素图层 |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.LocateLasPointsByProximity_3d('lidar.lasd', 'powerlines.shp',
search_radius="10 Feet",
count_field="Near_Pts",
out_features="located_pts.shp")
下面的示例演示了如何在独立 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())
许可信息
- Basic: 需要 3D Analyst
- Standard: 需要 3D Analyst
- Advanced: 需要 3D Analyst