الاسم
ST_VoronoiPolygons — تُعيد خلايا مخطط فورونوي (Voronoi) لرؤوس شكل هندسي.
المختصر
geometry ST_VoronoiPolygons( geometry geom , float8 tolerance = 0.0 , geometry extend_to = NULL );
الوصف
تحسب مخطط فورونوي (Voronoi) ثنائي الأبعاد من رؤوس الشكل المُمرّر. والنتيجة GEOMETRYCOLLECTION من مضلعات POLYGON تغطي غلافاً أكبر من امتداد رؤوس المُدخل. تُعيد null إذا كان الشكل المُدخل null. وتُعيد مجموعة أشكال فارغة إذا كان الشكل المُدخل يحتوي على رأس واحد فقط. وتُعيد مجموعة أشكال فارغة إذا كانت مساحة الغلاف extend_to صفراً.
المعاملات الاختيارية:
-
tolerance: المسافة التي تُعدّ الرؤوس ضمنها متكافئة. ويمكن تحسين متانة الخوارزمية بتمرير مسافة تسامح غير صفرية. (القيمة الافتراضية = 0.0) -
extend_to: إذا وُجد، يُمدَّد المخطط ليغطي غلاف الشكل المُمرّر، ما لم يكن أصغر من الغلاف الافتراضي (القيمة الافتراضية = NULL، والغلاف الافتراضي هو المستطيل المحيط بالمُدخل موسّعاً بنحو 50%).
تُنفَّذ بواسطة وحدة GEOS.
متاحة منذ: 2.3.0
أمثلة
نقاط معروضة فوق مخطط فورونوي
SELECT ST_VoronoiPolygons(
'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry
) AS geom;
ST_AsText output
GEOMETRYCOLLECTION(POLYGON((-110 43.3333333333333,-110 270,100.5 270,59.3478260869565 132.826086956522,36.8181818181818 92.2727272727273,-110 43.3333333333333)),
POLYGON((55 -90,-110 -90,-110 43.3333333333333,36.8181818181818 92.2727272727273,55 79.2857142857143,55 -90)),
POLYGON((230 47.5,230 -20.7142857142857,55 79.2857142857143,36.8181818181818 92.2727272727273,59.3478260869565 132.826086956522,230 47.5)),POLYGON((230 -20.7142857142857,230 -90,55 -90,55 79.2857142857143,230 -20.7142857142857)),
POLYGON((100.5 270,230 270,230 47.5,59.3478260869565 132.826086956522,100.5 270)))
مخطط فورونوي، بتسامح قدره 30 وحدة
SELECT ST_VoronoiPolygons(
'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry,
30) AS geom;
ST_AsText output
GEOMETRYCOLLECTION(POLYGON((-110 43.3333333333333,-110 270,100.5 270,59.3478260869565 132.826086956522,36.8181818181818 92.2727272727273,-110 43.3333333333333)),
POLYGON((230 47.5,230 -45.7142857142858,36.8181818181818 92.2727272727273,59.3478260869565 132.826086956522,230 47.5)),POLYGON((230 -45.7142857142858,230 -90,-110 -90,-110 43.3333333333333,36.8181818181818 92.2727272727273,230 -45.7142857142858)),
POLYGON((100.5 270,230 270,230 47.5,59.3478260869565 132.826086956522,100.5 270)))