Ich habe ein Shapefile von Polygonen, die effektiv Grenzen einer geografischen Einheit sind (betrachten Sie als Beispiel die 50 US-Bundesstaaten, in denen jeder Bundesstaat eine bestimmte Anzahl von Punkten enthält).
Ich möchte Voronoi-Polygone aus den Punkten erstellen , mit der Einschränkung, dass die Staatsgrenzen die Voronoi-Polygone, die aus den Punkten in diesem Zustand erstellt wurden, effektiv einschränken.
Der arbeitsintensive Weg, dies zu tun, besteht darin, 50 einzelne Shapefiles für jeden Zustand zu erstellen, Voronoi-Polygone in jedem zu erstellen und sie dann manuell wieder zusammenzuführen.
Gibt es eine einfachere Möglichkeit, dies zu tun, idealerweise in QGIS (verwende 2.18 auf einem Mac) ?
qgis
polygon
voronoi-thiessen
Steven
quelle
quelle
Antworten:
Es ist ein mehrstufiger Prozess, daher sollten Sie ein benutzerdefiniertes Modell oder Skript erstellen. Um Splitter von Polygonen zu vermeiden, die zu benachbarten Polygonpunkten gehören, müssen Sie Ihre Statusebene durchlaufen. Ich arbeite mit Zustandspolygonen und einer Reihe von zufälligen Punkten und gehe den Prozess durch, damit Sie verstehen, was in unserem Modell vor sich geht.
Im Modell
points_layer
intersect
polygons_layer
'Extracted (location)' from algorithm 'Extract by location'
500
(Es scheint übertrieben, aber wir möchten sicherstellen, dass Ihre Voronoi-Polygone den Zustand, in dem sie sich befinden, vollständig abdecken. Da wir diese Ebene im nächsten Schritt abschneiden, ist es unerheblich, wie groß wir diese machen.)Extract by location
'Voronoi polygons' from algorithm 'Voronoi polygons'
polygons_layer
output
Extract by location
undVoronoi polygons
Wie Sie sehen können, haben wir unsere staatlich beschränkten Voronoi-Polygone, in denen Punkte aus Nachbarstaaten ihre Anordnung nicht beeinflussen.
Hier ist ein Bild des Modells:
Das Bild vermittelt dies nicht, aber beachten Sie, dass die Polygonebeneneingabe des Modells ein
Vector Features
Objekt ist, keinVector Layer
.Ausführen des Modells
Wenn Sie Ihr Modell ausführen, ist es wichtig, dass Sie auf das Symbol klicken, um die Funktionen Ihres Status-Layers zu durchlaufen.
Sobald Sie das Modell ausgeführt haben, können Sie einfach Vektorebenen zusammenführen für die Ausgaben ausführen , um eine Ausgabe auf einer Ebene zu erhalten, wenn dies für Sie wichtig ist. Leider ist mir keine einfache Möglichkeit bekannt, mehrere Modellausgaben innerhalb des Modells selbst zusammenzuführen (bitte korrigiert mich jemand, wenn etwas vorhanden ist).
Wenn Sie mit Python vertraut sind, können Sie das exportierte Skript dieses Modells leicht ändern, um diesen zusätzlichen Schritt auszuführen. Da Sie in Ihrer Frage keine codebasierten Lösungen erwähnt haben, werde ich dies jedoch weglassen.
quelle
Ähnlich wie bei der Antwort von @csk können Sie diese beiden Alternativen ausprobieren:
1- Fügen Sie Knoten von Zustandspolygonen in das Voronoi-Werkzeug ein.
- Voronoi-Werkzeug mit Punkten und Knoten.
Der letzte Schritt besteht darin, Ihre Voronoi-Pole mit der Ebene "Zustände" zu beschneiden (falls erforderlich).
2- Verwenden Sie Voronoi direkt über der Punktebene, indem Sie den Puffer verwenden, um diese auf die vollständige Statuserweiterung zu "erweitern".
Wie Sie sehen, erhalten Sie unterschiedliche Ergebnisse. Es kommt darauf an, wonach Sie suchen.
quelle