Voronoi-Polygone, die ins Unendliche ablaufen?

18

Ich habe an der Implementierung des Skripts voronoi.py gearbeitet (Bill Simons Übersetzung von Steve Fortunes Code). Laut dem QGIS-Link ist es im Grunde derselbe Code, mit dem ich arbeite, aber die Art und Weise, wie die Polygone erzeugt werden, die sich bis ins Unendliche erstrecken können, unterscheidet sich zwischen den beiden. Im QGIS-Fall gehe ich davon aus, dass ein begrenzendes Rechteck zu einem gewissen Grad außerhalb der Ausdehnung der Standortpunkte generiert wird. In meinem Fall generiere ich falsche Standortpunkte als Kreis, der die interessierenden Standortpunkte umgibt. Die Kreispunkte haben einen Radius, der doppelt so groß ist wie die Ausdehnung der Standortpunkte. Die Ergebnisse zwischen den beiden sind in der beigefügten Abbildung dargestellt. Die QGIS-Implementierung befindet sich links und meine Implementierung rechts. Voronoi Beispiele.

Wie man sieht, erzeugt die QGIS-Implementierung seltsame Polygone, die keine Standortpunkte haben (siehe Standort 473 als Beispiel in beiden Implementierungen). Das ist offensichtlich falsch, aber ich bin mir auch nicht sicher, ob meine Implementierung korrekt ist. Da ich keinen Zugriff auf eine ArcInfo-Lizenz für ArcMap habe, kann ich nicht vergleichen, was ArcMap nativ generiert, und ich kann keine Möglichkeit finden, das Site-Point-Shapefile an eine Testperson anzuhängen. Wenn also jemand einen Kommentar zu meiner Verwendung eines "Unendlichkeitskreises" hat, um Kantenpolygone gegen ein "Unendlichkeitsrechteck" zu erzwingen, wäre ich dankbar. Besser noch, wenn jemand daran interessiert ist, die Ausgabe auf einer anderen GIS-Plattform zu testen, kann ich das Shapefile der von mir verwendeten Standortpunkte bereitstellen.


Es scheint ein Teil des Problems zu sein, dass sich die Polygone jenseits der Standortpunkte überlappen. Wenn sie also ohne Füllung symbolisiert werden, erscheinen sie als unterschiedliche Polygone. Die folgende Abbildung zeigt, was passiert, wenn das Polygon zu den Standorten 473 und 415 ausgewählt wird. So bleiben die ursprünglichen Fragen, aber es gibt eine neue Falte.


Es ist ein Fehler (oder eine "Unvollständigkeit"), der in QGIS zu korrekten Ergebnissen führt, wenn ein Puffer von 0% verwendet wird. Was noch geklärt werden muss, ist, ob ein dichtes Muster kreisförmiger "Unendlichkeitspunkte" das gleiche Ergebnis liefert wie rechteckige "Unendlichkeitskanten".

Bildbeschreibung hier eingeben

PolyGeo
quelle
Ich würde gerne Ihre Punktedaten ausprobieren. Meine Tests zeigen kein solches Verhalten.
Underdunkel
Ich habe eine Zip-Datei bereit zu gehen, kontaktieren Sie mich per E-Mail an [email protected] und ich kann es an Sie weiterleiten. Ich glaube, ich habe einen 10% -Puffer hinzugefügt, als ich das voronoi in QGIS ausgeführt habe.
Vielleicht könnten Sie Ihre aktuelle Frage neu formulieren (nach Update 2).
Underdunkel
Gute Arbeit. Ich hoffe, Sie werden Ihren Code irgendwie mit der Community teilen.
Michalis Avraam
Siehe den Link unten in der Antwort, ich musste aktualisieren, da ESRI die ursprünglichen Threads getötet

Antworten:

10

Ich konnte bestätigen, dass meine Implementierung mindestens mit ArcGIS vergleichbar ist (erfordert jedoch eine ArcInfo-Lizenz). Die QGIS-Implementierung ist fehlerhaft, wenn ein Pufferabstand verwendet wird. Für Benutzer von ArcGIS mit einer ArcView-Lizenz finden Sie das Toolset für Voronoi und / oder Delaunay als Triangulationstools .

PolyGeo
quelle
Es gab mehrere Fehler im QGIS-Voronoi-Code. In QGIS 3.2.2 wurden viele Korrekturen vorgenommen. Wäre interessant zu hören, ob das geholfen hat.
Håvard Tveite