Eingeschränkte Voronoi-Polygone QGIS

9

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) ?

Steven
quelle
1
Warum nicht Voronoi-Polygone für die gesamte Punktebene erstellen und dann das Ergebnis mit der geografischen Grenzschicht schneiden?
csk
Kann ein Staat nur zur Verdeutlichung viele Punkte haben?
Glühwürmchen-Orange

Antworten:

3

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.

Zustandspunkte

Im Modell

  1. Nach Ort extrahieren
    • Extrahieren Sie Funktionen aus: points_layer
    • Wo die Funktionen: intersect
    • Durch Vergleich mit den Funktionen von: polygons_layer

Zustandsextrakte von Punkten

  1. Voronoi-Polygone
    • Eingabeebene: 'Extracted (location)' from algorithm 'Extract by location'
    • Pufferbereich: 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.)
    • Übergeordnete Algorithmen: Extract by location

voronoi vom Staat

  1. Clip
    • Eingabeebene: 'Voronoi polygons' from algorithm 'Voronoi polygons'
    • Überlagerungsebene: polygons_layer
    • Ausgeschnitten: output
    • Übergeordnete Algorithmen: Extract by locationundVoronoi polygons

abgeschnitten

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:

Verarbeitungsmodell

Das Bild vermittelt dies nicht, aber beachten Sie, dass die Polygonebeneneingabe des Modells ein Vector FeaturesObjekt ist, kein Vector 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.

Option iterieren

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.

JoshC
quelle
1
Hat perfekt funktioniert! Ich bin erstaunt, ich habe mir ein paar Stunden wegen des gleichen Problems den Kopf geschlagen und ich habe gerade Ihr Modell repliziert und die Ergebnisse von Anfang an erhalten. Ich schulde dir ein Bier.
sys49152
1

Ä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.

  • Knoten aus der Ebene "Zustände" (Knoten extrahieren verwenden).
  • Punkte und Knoten zusammenführen.

Geben Sie hier die Bildbeschreibung ein - Voronoi-Werkzeug mit Punkten und Knoten.

Geben Sie hier die Bildbeschreibung ein

  • 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".

Geben Sie hier die Bildbeschreibung ein

  • Clip mit Statusebene.

Wie Sie sehen, erhalten Sie unterschiedliche Ergebnisse. Es kommt darauf an, wonach Sie suchen.

César Arquero
quelle