Seite 1 von 1

arcpy Polygon erzeugen

Verfasst: Donnerstag 1. Oktober 2015, 15:41
von M-Dot_G-Punkt
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?

Re: arcpy Polygon erzeugen

Verfasst: Donnerstag 1. Oktober 2015, 15:47
von Sirius3
@M-Dot_G-Punkt: was hast Du versucht? Gibt es eine Fehlermeldung?

Re: arcpy Polygon erzeugen

Verfasst: Donnerstag 1. Oktober 2015, 15:50
von BlackJack
@M-Dot_G-Punkt: Was hast Du denn versucht? Die Dokumentation enthält doch ein Beispiel.

Re: arcpy Polygon erzeugen

Verfasst: Donnerstag 1. Oktober 2015, 16:09
von M-Dot_G-Punkt
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")  

Re: arcpy Polygon erzeugen

Verfasst: Donnerstag 1. Oktober 2015, 16:29
von 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.