Mehr

Arcpy.sa.Viewshed mit OFFSETA

Arcpy.sa.Viewshed mit OFFSETA


Dies verwendet ArcGIS10 arcpy mit Spatial Analyst.

Ich muss Viewshed aufrufen, aber mit einer Beobachterhöhe. Ich habe versucht, einen Z-fähigen Punktfunktionssatz zu verwenden, aber das wirft nur einen Fehler aus. Ich füttere ein arcpy.PointGeometry-Objekt mit einem Raster-Objekt eines dem für meine Eingaben. z.B.

viewshed = arcpy.sa.Viewshed(dem, source_point)

Ich verwende dynamisch generierte Punkte als Quelle für meine Beobachterpunkte für das Sichtfeld. Feature-Classes müssen im Speicher erstellt werden.

Ich habe mehrere Möglichkeiten zum Erstellen einer In-Memory-Feature-Class mit einem OFFSETA-Feld ausprobiert, aber bisher hat es nicht funktioniert.

Hat jemand eine Idee, wie man Viewshed OFFSETA oder eine andere Möglichkeit zum Festlegen der Beobachterhöhe beim Aufrufen von Viewshed in Python mit einer In-Memory-Feature-Class verwendet?


Hier ist die Lösung, die ich mit dem Rat von Matthew Snape gefunden habe. dem, source_point, offseta und offsetb sind alle Eingaben für die Funktion, die enthalten ist in:

# Viewshed-Eingabe erstellen arcpy.CreateFeatureclass_management("in_memory", "viewshedinput", "POINT") arcpy.AddField_management("in_memoryviewshedinput", "OFFSETA", "FLOAT") arcpy.AddField_management("in_memoryviewshedinput", "OFFSETB", "FLOAT") rows = arcpy.InsertCursor("in_memoryviewshedinput") row = rows.newRow() row.shape = source_point row.OFFSETA = offseta row.OFFSETB = offsetb rows.insertRow(row) del rows, row # Viewshed für Quellpunkt berechnen viewshed = arcpy.sa.Viewshed(dem, "in_memoryviewshedinput")

Das Viewshed-Tool verwendet Feature-Layer, um Beobachter zu definieren. Der OFFSETA und andere Parameter werden über ein Feld angegeben.

Erstellen Sie Ihren Punkt als Feature-Layer und verwenden Sie dann arcpy.AddField_management und arcpy.CalculateField_management, um das Feld zu erstellen und festzulegen.


Schau das Video: How to Create a Viewshed in ArcGIS Pro