Ich versuche herauszufinden, wie ein Polygon erstellt wird, das alle Endpunkte eines Shapefiles, das eine Reihe von Polyilnen enthält, mit PythonScript in ArcGIS verbindet. Ich habe Probleme damit, da die Reihenfolge der Knoten im Polygon wichtig ist. Ich möchte das graue Polygon im Bild aus den grünen Linien erreichen
10
Antworten:
SCHRITTE:
Berechnen Sie die Mittelpunkte der Abschnitte:
Bauen Sie ihren euklidischen minimalen Spannbaum auf, lösen Sie ihn auf und berechnen Sie den Puffer. Der Abstand entspricht der Hälfte der kürzesten Abschnittslänge:
Erstellen Sie Abschnittsendpunkte und berechnen Sie deren Verkettung (Abstand entlang der Linie) an der Grenze des Puffers (geschlossene Polylinienversion des Puffers):
Sortieren Sie die Endpunkte in aufsteigender Reihenfolge mithilfe des Verkettungsfelds. Punkte unten gekennzeichnet durch ihre FID:
Erstellen Sie ein Polygon aus einer geordneten Menge von Punkten:
Skript:
Ich weiß, dass es ein Fahrrad ist, aber es ist mein eigenes und ich mag es
quelle
Ich poste diese Lösung für QGIS hier, weil sie freie Software ist und einfach zu implementieren ist. Ich habe nur den richtigen "Zweig" der Polylinienvektorschicht betrachtet. wie es auf dem nächsten Bild zu sehen ist (12 Merkmale in der Attributtabelle):
Der Code (Algorithmus in einem einzeiligen Python-Listenverständnis) für die Ausführung in der Python-Konsole von QGIS lautet:
Nach dem Ausführen des Codes:
Es wurde eine Polygon-Speicherebene erstellt (mit 11 Merkmalen in der Attributtabelle). Es funktioniert gut.
quelle
Sie können die Endpunkte auswählen, die an einem Polygon teilnehmen sollen, und nur aus diesen Punkten eine TIN erstellen. Konvertieren Sie die TIN in Polygone, lösen Sie die Polygone auf. Der Trick zur Automatisierung dieses Prozesses besteht darin, zu entscheiden, welche Punkte zu jedem Polygon beitragen sollen. Wenn Sie Linien mit gültigen Richtungen haben und diese Linien alle ein gemeinsames Attribut haben, können Sie eine Abfrage zum Exportieren schreiben, z. B. die Endscheitelpunkte mithilfe von Linienscheitelpunkten zu Punkten, und dann nach Attributen die Punkte auswählen, die den gemeinsamen Attributwert haben.
Besser wäre es, die Punkte zu extrahieren / auszuwählen, die x, y-Werte mit einem Cursor zu lesen und mit den x, y-Werten ein neues Polygon zu schreiben. Ich kann kein angehängtes Bild in Ihrem Beitrag sehen, aber wenn die Punktreihenfolge wichtig ist, sortieren Sie sie, sobald Sie die x-, y-Werte in einer Python-Liste gespeichert haben. http://resources.arcgis.com/EN/HELP/MAIN/10.1/index.html#//002z0000001v000000
quelle
Wenn Sie den Kommentar @iant erweitern, ist die Alpha-Form (Alpha-Rumpf) der Endpunkte die Ihrem Snapshot am nächsten liegende Geometrie. Glücklicherweise wurden viele gut aufgenommene Threads bereits auf GIS SE beantwortet. Beispielsweise:
Erstellen Sie ein komplexes Polygon aus der Punktebene, indem Sie in ArcGIS nur Grenzpunkte verwenden
Was sind Definition, Algorithmen und praktische Lösungen für den konkaven Rumpf?
Um Ihr Problem zu lösen, verwenden Sie zuerst Feature To Point , um die Endpunkte zu extrahieren. Verwenden Sie dann das Python-Tool aus diesem Link , um den konkaven Rumpf zu berechnen.
quelle