Ich habe eine Reihe von Polygonen, die ich drehen möchte.
Jedes Polygon hat einen Drehwinkel und einen Ankerpunkt (xy-Koordinate), die als Feldwerte gespeichert sind.
Zufällig befinden sich alle Ankerpunkte auf einem Scheitelpunkt des Polygons.
Was ist der beste Weg, dies mit ArcGIS für Desktop und ArcPy zu tun?
Ich weiß, dass wir sie im Bearbeitungsmodus drehen können, aber ich möchte sie nicht alle manuell ausführen, da sie alle unterschiedlich sind.
Ich würde eine Python-Antwort bevorzugen, damit ich sie automatisieren und in meinen Arbeitsablauf integrieren kann.
arcpy
arcgis-10.0
dklassen
quelle
quelle
Antworten:
Angenommen, Sie verwenden ein projiziertes Koordinatensystem ... (wird viel komplizierter, wenn Sie es nicht sind)
Bei gegebenem Drehpunkt (X, Y) und Drehwinkel t müssen Sie jeden Punkt im Polygon nacheinander drehen. Angenommen, das Polygon besteht aus Punkten in der Menge, so dass set = [(x0, y0), (x1, y1), (x2, y2) ...]
Sie müssen jeden Punkt in der Menge nacheinander drehen, um die Menge '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ... zu bilden.]
Um sich zu drehen, müssen Sie zuerst das Koordinatensystem in den Ursprung transformieren, indem Sie den Drehpunkt auf (0,0) verschieben. (x, y) ist der zu drehende Punkt.
Dies sollte ziemlich einfach in ein Python-Skript zu übersetzen sein.
quelle
Hier ist eine Diskussion aus den Esri-Foren, die eine Lösung für Sie sein könnte. Suchen Sie nach der Antwort von Esri. Dazu müssen die Polygone mit dem Raster-Werkzeug Drehen in Raster konvertiert und wieder in Polygone konvertiert werden. Es kann jedoch Bedenken geben, dass die Polygongrenzen beim Konvertieren zwischen Raster / Vektor durcheinander geraten.
Die gute Nachricht ist, dass alles in Python möglich ist, ohne ArcObjects aufzurufen. Und Sie sollten SearchCursor verwenden können, um Ihre Drehwinkel und Ankerpunkte aus der Attributtabelle zu erfassen.
Jedenfalls nur eine mögliche Alternative.
quelle