ST_VoronoiPolygons — Gibt die Zellen des Voronoi-Diagramms der Scheitelpunkte einer Geometrie zurück.
geometry ST_VoronoiPolygons( geometry geom , float8 tolerance = 0.0 , geometry extend_to = NULL );
Berechnet ein zweidimensionales Voronoi-Diagramm aus den Scheitelpunkten der angegebenen Geometrie. Das Ergebnis ist eine GEOMETRIE-SAMMLUNG von POLYGONEN, die einen Bereich abdeckt, der größer ist als die Ausdehnung der Eingabescheitelpunkte. Gibt null zurück, wenn die Eingabegeometrie null ist. Gibt eine leere Geometriesammlung zurück, wenn die Eingabegeometrie nur einen Scheitelpunkt enthält. Gibt eine leere Geometriesammlung zurück, wenn die extend_to-Hüllkurve eine Fläche von Null hat.
Optionale Parameter:
Toleranz: Der Abstand, innerhalb dessen Scheitelpunkte als gleichwertig betrachtet werden. Die Robustheit des Algorithmus kann durch Angabe einer Toleranzdistanz ungleich Null verbessert werden. (Voreinstellung = 0.0)
extend_to: Wenn vorhanden, wird das Diagramm so erweitert, dass es die Hüllkurve der übergebenen Geometrie abdeckt, sofern diese nicht kleiner als die Standardhüllkurve ist (Standard = NULL, Standardhüllkurve ist die um etwa 50 % erweiterte Bounding Box der Eingabe).
Wird vom GEOS Modul ausgeführt
Verfügbarkeit: 2.3.0
Punkte über dem Voronoi Diagramm
SELECT ST_AsText(ST_VoronoiPolygons('MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry
)) AS geom;
GEOMETRYCOLLECTION(POLYGON((-110 270,100.5 270,59.34782608695652 132.82608695652175,36.81818181818182 92.27272727272727,-110 43.33333333333332,-110 270)), POLYGON((-110 -90,-110 43.33333333333332,36.81818181818182 92.27272727272727,55 79.28571428571429,55 -90,-110 -90)), POLYGON((230 -20.71428571428572,55 79.28571428571429,36.81818181818182 92.27272727272727,59.34782608695652 132.82608695652175,230 47.50000000000001,230 -20.71428571428572)),POLYGON((230 -90,55 -90,55 79.28571428571429,230 -20.71428571428572,230 -90)), POLYGON((230 270,230 47.50000000000001,59.34782608695652 132.82608695652175,100.5 270,230 270)))
Voronoi-Diagramm, mit einer Toleranz von 30 Einheiten
SELECT ST_AsText(ST_VoronoiPolygons('MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry,
30)) AS geom;
GEOMETRYCOLLECTION(POLYGON((-110 270,135.55555555555557 270,36.81818181818182 92.27272727272727,-110 43.33333333333332,-110 270)), POLYGON((230 270,230 -45.71428571428574,36.81818181818182 92.27272727272727,135.55555555555557 270,230 270)), POLYGON((230 -90,-110 -90,-110 43.33333333333332,36.81818181818182 92.27272727272727,230 -45.71428571428574,230 -90)))