LAS-Punkte nach Nähe lokalisieren (3D Analyst)

Zusammenfassung

Bestimmt LAS-Punkte in der dreidimensionalen Nähe von Z-aktivierten Features. Gleichzeitig wird die Option zur Reklassifizierung dieser Punkte bereitgestellt.

Verwendung

  • Mit diesem Werkzeug wird das Eingabe-Feature mit einem Feld aktualisiert, das die Anzahl der LAS-Punkte enthält, die innerhalb des angegebenen Radius liegen. Für die Anzahl der Punkte, die mit diesem Werkzeug erstellt werden können, gibt es keine Beschränkung. Daher sollten Sie den Einsatz von sehr großen Suchentfernungen vermeiden.

  • Mit dem LAS-Dataset-Layer können Sie die angezeigten und verarbeiteten LAS-Punkte begrenzen, indem Sie in den Filtereinstellungen des Layers eine beliebige Kombination von Klassifizierungscodes, Klassifizierungs-Flags und Rückgabewerten auswählen. Die Filter können über das Dialogfeld Layer-Eigenschaften oder mit dem Werkzeug LAS-Dataset-Layer erstellen definiert werden.

  • Wenn Sie das Ausgabe-Punkt-Feature mit Singlepoint-Geometrie erstellen, wird der Ausgabe ein Feld namens DIST3D hinzugefügt. Darin ist die 3D-Entfernung vom Punkt zum nächstgelegenen Eingabe-Feature enthalten.

Syntax

arcpy.3d.LocateLasPointsByProximity(in_las_dataset, in_features, search_radius, count_field, {out_features}, {geometry}, {class_code}, {compute_stats})
ParameterErklärungDatentyp
in_las_dataset

Das zu verarbeitende LAS-Dataset.

LAS Dataset Layer
in_features

Die 3D-Punkt-, Linien-, Polygon- oder Multipatch-Features, deren Nähe zum Identifizieren von LAS-Punkten verwendet wird.

Feature Layer
search_radius

Der Bereich um die Eingabe-Features, der auf das Vorhandensein von LAS-Punkten überprüft wird. Die Entfernung kann entweder als linearer Abstand angegeben oder aus einem numerischen Feld in der Attributtabelle des Eingabe-Features abgeleitet werden. Wenn der Suchradius aus einem Feld oder einem linearen Abstand abgeleitet wird, dessen Einheiten als Unbekannt eingegeben werden, wird der XY-Raumbezug der Eingabe-Features verwendet.

Folgende Einheiten werden unterstützt:

  • UNKNOWNUnbekannt
  • INCHESZoll
  • FEETFuß
  • YARDSYards
  • MILESMeilen
  • CENTIMETERSZentimeter
  • DECIMETERSDezimeter
  • METERSMeter
  • KILOMETERSKilometer
Linear Unit; Field
count_field

Der Name des Feldes, das der Attributtabelle des Eingabe-Features hinzugefügt und mit der Anzahl an LAS-Punkten in der Nähe der einzelnen Feature gefüllt wird. Der Standardname des Feldes ist COUNT.

String
out_features
(optional)

Die Punkt-Features, die die LAS-Punkte darstellen, die in der angegebenen Nähe der Eingabe-Features ermittelt wurden.

Feature Class
geometry
(optional)

Gibt die Geometrie der Ausgabe-Punkt-Features an, die die LAS-Punkte darstellen, die sich in der angegebenen Nähe der Eingabe-Features befinden.

  • MULTIPOINTMultipoint-Features, die in jeder Zeile mehrere Punkte aufweisen.
  • POINTEinzelpunkt-Features, die für jeden identifizierten LAS-Punkt eine eindeutige Zeile aufweisen.
String
class_code
(optional)

Der Klassencodewert zum Reklassifizieren der Punkte, die sich innerhalb des Suchradius der Eingabe-Features befinden.

Long
compute_stats
(optional)

Gibt an, ob für die vom LAS-Dataset referenzierten LAS-Dateien Statistiken berechnet werden sollen. Durch das Berechnen von Statistiken wird ein räumlicher Index für jede LAS-Datei bereitgestellt, wodurch sich die Analyse- und Darstellungs-Performance verbessert. Ferner werden durch Statistiken die Filter- und Symbolisierungsverfahren verbessert, da die Anzeige von LAS-Attributen, beispielsweise Klassifizierungscodes und Rückgabeinformationen, auf die in der LAS-Datei vorhandenen Werte begrenzt wird.

  • COMPUTE_STATSEs werden Statistiken berechnet.
  • NO_COMPUTE_STATSEs werden keine Statistiken berechnet. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

NameErklärungDatentyp
out_las_dataset

Das aktualisierte LAS-Dataset.

LAS-Dataset-Layer
derived_features

Die aktualisierten Eingabe-3D-Features.

Feature-Layer

Codebeispiel

LocateLasPointsByProximity: Beispiel 1 (Python-Fenster)

Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.

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: Beispiel 2 (eigenständiges Skript)

Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.

'''****************************************************************************
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())

Lizenzinformationen

  • Basic: Erfordert 3D Analyst
  • Standard: Erfordert 3D Analyst
  • Advanced: Erfordert 3D Analyst

Verwandte Themen