arcpy Polygon erzeugen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
M-Dot_G-Punkt
User
Beiträge: 8
Registriert: Sonntag 27. September 2015, 20:57

Ich möchte ein Array von Punkten als 3D-Polygon ausgeben lassen.
Z.B.: coordList = [[x1, y1, z1][x2, y2, z2]...]

Die Methode heißt arcpy.Polygon(coordList). Ich versuch dies schon seit Tagen und bekomme es nicht hin.
Kann mir jemand weiterhelfen?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@M-Dot_G-Punkt: was hast Du versucht? Gibt es eine Fehlermeldung?
BlackJack

@M-Dot_G-Punkt: Was hast Du denn versucht? Die Dokumentation enthält doch ein Beispiel.
M-Dot_G-Punkt
User
Beiträge: 8
Registriert: Sonntag 27. September 2015, 20:57

Ich habe genau versucht das Beispiel umzusetzen.

Fehler:
point.X = coordPair[0]
TypeError: 'float' object has no attribute '__getitem__'

Code: Alles auswählen

coordList = [[431270.1, 648432.02, 199.92], [431258.9, 648415.4, 199.91], [431269.4, 648412.59, 200.0]]
point = arcpy.Point()
array = arcpy.Array()
featureList = []
 
for feature in coordList:
    for coordPair in feature:
        point.X = coordPair[0]
        point.Y = coordPair[1]
        point.Z = coordPair[2]
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    array.removeAll()
    featureList.append(polygon)
arcpy.CopyFeatures_management(featureList, "e:/polygons.shp")  
BlackJack

@M-Dot_G-Punkt: Das diese Fehlermeldung kommt sollte man eigentlich erwarten. Du iterierst über die Listen mit den drei Zahlen, dann über jede einzelne Zahl und versuchst dann auf das erste Element einer Zahl zuzugreifen. Zahlen haben aber keine Elemente, das sind skalare Werte und keine Container. Was hätte denn da auch das Ergebnis sein sollen?

Lass Dir Zwischenergebnisse ausgeben und überprüfe ob das vom Wert und vom Typ (`type()`-Funktion) Deinen Erwartungen entspricht und wenn nicht überlege warum das so ist.

Gute Namen helfen auch zu verstehen was man so macht. `coordPair` klingt für mich nach einem Paar (*zwei*) von Koordinaten. Da ist aber nix von der Länge zwei.
Antworten