ST_VoronoiPolygons — ジオメトリの頂点からボロノイ図のセルを返します。
geometry ST_VoronoiPolygons(
geometry geom , float8 tolerance = 0.0 , geometry extend_to = NULL )
;
与えられたジオメトリの頂点から2次元ボロノイ図を生成します。結果はPOLYGONのGEOMETRYCOLLECTIONで、、入力の頂点の範囲以上のエンベロープを覆います。入力ジオメトリがNULLの場合にはNULLを返します。入力ジオメトリの頂点が一つの場合には空ジオメトリを返します。extend_to
で作られるエンベロープの面積が0の場合には空ジオメトリを返します。
任意パラメータ:
tolerance
: 複数の頂点を同一のものと捉える距離。0でない値を許容距離として与えるとアルゴリズムのロバスト性が改善します (デフォルトは0.0)。
extend_to
: これが与えられている場合には、与えられたジオメトリのエンベロープを覆うように図が拡張されます。デフォルト値以上でないと有効ではありません (デフォルトはNULLで、デフォルトのエンベロープは入力ジオメトリのバウンディングボックスから50%拡張したものです)。
GEOSモジュールで実現しています。
Availability: 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)))
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)))