摘要
识别启用了 z 值的要素的三维邻域中的激光雷达点,同时提供对点进行重分类并将其导出为输出要素类的选项。
用法
此工具使用包含指定搜索半径内的 LAS 点计数的字段更新输入要素。
-
将 LAS 数据集指定为输入时,将处理它引用的 LAS 文件中的所有数据点。也可以按分类代码、分类标记和回波值来选择激光雷达数据的子集,方法是在 LAS 数据集图层中应用所需的 LAS 点过滤器。可通过图层属性对话框或创建 LAS 数据集图层工具定义过滤器。
考虑使用此工具确定指定邻域内对于感兴趣要素是否存在潜在障碍物,例如公用设施管线附近的植被扩侵。
语法
LocateLasPointsByProximity_3d (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 点总数。 | String |
out_features (可选) | 表示输入要素指定邻域中找到的 LAS 点的输出点要素。 | Feature Class |
geometry (可选) | 表示输入要素指定邻域中找到的 LAS 点的输出点要素的几何形态。
| String |
class_code (可选) | 用于对在输入要素搜索半径内发现的点进行重分类的类代码值。 | Long |
compute_stats (可选) | 指定是否应计算 LAS 数据集引用的 LAS 文件的统计数据。统计数据的存在允许 LAS 数据集图层使用过滤和符号系统选项,以便仅显示 LAS 文件中存在的 LAS 属性值。
| Boolean |
代码示例
LocateLasPointsByProximity 示例 1(Python 窗口)
下面的示例演示了如何在 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")
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())
环境
许可信息
- ArcGIS Desktop Basic: 需要 3D Analyst
- ArcGIS Desktop Standard: 需要 3D Analyst
- ArcGIS Desktop Advanced: 需要 3D Analyst