名前

ST_VoronoiPolygons — ジオメトリの頂点からボロノイ図のセルを返します。

概要

geometry ST_VoronoiPolygons( g1 geometry , tolerance float8 , extend_to geometry );

説明

ST_VoronoiPolygonsは、与えられたジオメトリの頂点から、2次元ボロノイ図を計算します。結果は、入力頂点の範囲より大きいエンベロープを覆うポリゴンのジオメトリコレクションです。入力ジオメトリがNULLの場合には、NULLを返します。入力ジオメトリに頂点が一つだけしか無い場合には、空ジオメトリコレクションを返します。extend_toのエンベロープの面積が0の場合には、空ジオメトリコレクションを返します。

任意パラメータ:

  • 'tolerance' : この距離以内の点は等価とします。0でない許容距離を指定することで、アルゴリズムのロバスト性が改善します。デフォルトは0.0です。

  • 'extend_to': ジオメトリが"extend_to"パラメータとして渡された場合には、エンベロープがデフォルトエンベロープより小さい場合を除いて、ボロノイ図は"extend_to"ジオメトリのエンベロープを覆う範囲になります (デフォルトはNULLで、デフォルトのエンベロープは入力ジオメトリのバウンディングボックスから各方向に50%ずつ拡張したものです)。

GEOSモジュールで実現しています。

Availability: 2.3.0

Points overlaid on top of Voronoi diagram

SELECT
        ST_VoronoiPolygons(geom) As geom
FROM (SELECT 'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry As geom ) As g;

-- ST_AsText 出力 --
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(geom, 30) As geom
FROM (SELECT 'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry As geom ) As g;

-- ST_AsText 出力
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)))

許容範囲を30単位とした、マルチラインストリングのボロノイ図

SELECT ST_VoronoiLines(geom, 30) As geom
FROM (SELECT 'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry As geom ) As g

-- ST_AsText 出力
MULTILINESTRING((135.555555555556 270,36.8181818181818 92.2727272727273),(36.8181818181818 92.2727272727273,-110 43.3333333333333),(230 -45.7142857142858,36.8181818181818 92.2727272727273))

関連情報

ST_DelaunayTriangles, ST_VoronoiLines, ST_Collect