Ich habe einige Polylinien-Feature-Objekte in Python. Jetzt möchte ich alle Punkte von Polylinien erhalten.
Zum Beispiel, wenn eine Polylinie einen Startpunkt- [0,0]
Endpunkt hat [5,5]
. Ergebnis : [1,1];[2,2];[3,3];[4,4];[5,5]
.
Ich möchte alle ganzzahligen Punkte auf dieser Linie einschließlich der Endpunkte finden. Für gerade Linien ist dies kinderleicht, aber wenn die Polylinie die Geometrietypen Beizer-Kurve, Kreisbogen und Elliptischer Bogen hat, wie kann ich das tun?
BEARBEITEN:
Ich kann nur die Tools verwenden, die in allen Lizenzstufen von ArcGIS verfügbar sind. Zum Beispiel ArcGIS Basic.
arcpy
point
features
geometry-conversion
Nutzer
quelle
quelle
Antworten:
Ich weiß, dass dies alt ist, aber ich habe nach dem gleichen gesucht, da ich ArcInfo für die FeatureVerticesToPoints- Tools nicht habe . Nachdem ich die Suchcursor-Lösung oben verwendet hatte, ging ich weiter, um den Code zu vereinfachen, und stellte fest, dass mit NumPy-Arrays im Datenzugriffsmodul ein einfaches und sehr schnelles Skript erstellt werden konnte. Ich benutze dies als Skript-Tool.
Hinweis: Der Schlüssel ist der
explode_to_points
Parameter inarcpy.da.FeatureClassToNumPyArray
Hier ist ein Link zum Speicherort des ArcGIS-Repositorys: Feature-Class zu Punkten
quelle
ctrl-k
wenden Sie dann die Code-Formatierung an (gleich fürb
alt undi
talisch). Konventionell neigen wir dazu, gesprächige Dinge wie "Hallo", "Danke", "Prost" zu vermeiden. Diese sind immer präsent und tragen dazu bei, die Idee zu bekräftigen, dass sich dieser Ort von den üblichen Foren und E-Mails unterscheidet. Willkommen an Bord.Wie ich verstanden habe, müssen Sie die Anzahl der Scheitelpunkte für Ihre Polylinien-Features erhöhen. Außerdem können alle Segmente "Beizer-Kurve, Kreisbogen, Elliptischer Bogen" in mehrere Liniensegmente umgewandelt werden.
Für diese Aufgabe in ArcGIS können Sie das Werkzeug Verdichten (Bearbeiten) in ArcToolbox verwenden.
Anschließend können Sie die Scheitelpunkte Ihrer Polylinien in Punkt- Features konvertieren, wie von Darren Cope und Artwork21 vorgeschlagen.
Wenn Sie dies lieber in ArcMap tun möchten, lesen Sie das Erstellen neuer Punkte entlang eines Linienhilfethemas .
quelle
Folgendes sollte für Polylinien und Polygone funktionieren:
Für einige britische Straßendaten erhalte ich dies; Eine verschachtelte Liste von X, Y-Paaren für jeden Scheitelpunkt, aus dem die Polylinie besteht:
quelle
print pnt.X, pnt.Y
mitpart_list.append([pnt.X, pnt.Y])
. Und Sie drucken dies am Ende der Schleife. Wie kann Ihr Code alle Punkte einer Linie erhalten, der ESRI-Code jedoch nicht?Wie von Darren Cope vorgeschlagen, kann das Konvertieren Ihrer Ebene in Punktscheitelpunkte mit dem Werkzeug Feature-Scheitelpunkte in Punkte erfolgen .
Hier ist der Python-Code snippedt:
quelle