Dies ist eine andere Möglichkeit, dies mit einem da.SearchCursor zu tun :
import arcpy
fc=r'C:\TEST.gdb\polygons123'
with arcpy.da.SearchCursor(fc,['OID@','SHAPE@']) as cursor:
for row in cursor:
array1=row[1].getPart()
for vertice in range(row[1].pointCount):
pnt=array1.getObject(0).getObject(vertice)
print row[0],pnt.X,pnt.Y
Das Ergebnis sind ObjectID, X und Y, die nach Excel kopiert werden können:
...
1 537505.894287 6731069.60889
1 537533.516296 6731078.20947
1 537555.316528 6731082.53589
1 537562.501892 6731085.47913
1 537589.395081 6731070.52991
1 537617.062683 6731058.29651
2 537379.569519 6729746.16272
2 537384.81311 6729746.06012
2 537396.085327 6729748.62311
2 537404.065674 6729752.75311
2 537425.145325 6729773.72931
2 537429.842102 6729777.07129
2 537442.971313 6729780.10651
2 537450.27533 6729780.51611
...
Probieren Sie die Geo-Wizard-Tools von Spatial Technologies aus. Es hat mehrere kostenlose Tools, die tun können, was Sie wollen. Probieren Sie die Get-Polygon-Koordinaten aus. Oder Polygon zu Punkten
et geo-wizards
quelle
Das folgende Python-Skript (für das ArcGIS 10.1 oder höher erforderlich ist) verwendet
arcpy.da
ein Shapefile als Eingabe und erstellt eine Tabelle mit einem Eintrag für jeden Scheitelpunkt in jedem in der .shp-Datei vorhandenen Polygon. . Objekt- und Sequenz-IDs binden die Punkte an eine bestimmte Position in einem bestimmten Polygon zurück.H / t an @PaulSmith in diesem Beitrag: Holen Sie sich alle Punkte einer Polylinie, um die
explode_to_points
Option imarcpy.da.FeatureClassToNumPyArray
Werkzeug hervorzuhebenIch habe auch ein Skript geschrieben, das speziell die folgenden Anforderungen erfüllt: Einfügen von Scheitelpunktkoordinaten in ein Polygon, das als Duplikat dieser Frage markiert ist. Der folgende Code lautet:
quelle
Daher habe ich die Lösung noch nicht abgeschlossen, aber es sieht so aus, als könnten Sie dieses Tool verwenden:
Konvertierung> JSON> Funktionen zu JSON.
Dadurch wird Ihr Shapefile (in meinem Fall 81 Polygone) in eine JSON-Datei konvertiert. Sie können dies mit einem Texteditor öffnen, um zu sehen, dass tatsächlich alle Eckpunkte für jedes Polygon aufgelistet sind.
Darüber hinaus behandelt die Python-Standardbibliothek (import json) die json-Objekte als Wörterbücher. Sie können dann einfach Ihre Wörterbücher durchlaufen, um die Eckpunkte (und alle anderen gewünschten Attribute) in eine CSV-Datei zu schreiben. Wenn ich es zum Laufen bringe, komme ich zurück und poste die Lösung.
quelle
Ich brauchte nur die x- und y-Koordinaten für die Polylinie und das Polygon. Ich habe ToolBox -> Datenverwaltungstools -> Features -> Feature to Point verwendet. Dadurch wurde eine Punktformdatei erstellt. Anschließend habe ich XY-Koordinaten aus demselben Menü "Features" hinzugefügt, um XY-Koordinaten zu generieren. Dann extrahierte ich die Informationen aus der Shapes-Attributtabelle in eine Excel-Tabelle. Dies löste mein Problem, nicht sicher, ob Sie das gleiche suchen.
quelle
Hier ist ein Workaround in verzweifelten Zeiten:
Diese Methode ist für kleine Datensätze in Ordnung, aber die Abhängigkeit / Einschränkungen von den OCR-Konvertern sind das Hauptanliegen. Mit Vorsicht verwenden.
quelle