名前

ST_ConvexHull — ジオメトリーの凸包を計算します。

概要

geometry ST_ConvexHull(geometry geomA);

説明

ジオメトリーの凸包を計算します。凸包は、入力ジオメトリーのすべてを囲む最小の凸ジオメトリです。

凸包は、ジオメトリーの集合に輪ゴムをかけて得られるジオメトリーと見ることができます。これは「真空パック」に似ている凹包と異なります。凸包は観察ポイントの集合に基づいて、響を受けた領域を決定するために、しばしば使われます。

凸包は一般的にポリゴンです。二つ以上の同一線上のポイントの凸包は、2点のラインストリングになります。一つ以上の同一ポイントの凸包はポイントです。

集約関数ではありません。ジオメトリー集合の凸包を計算するには、ジオメトリー集合をジオメトリーコレクションに集約するST_Collectを使います (ST_ConvexHull(ST_Collect(geom)) 等)。

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

このメソッドはOGC Simple Features Implementation Specification for SQL 1.1の実装です。 s2.1.1.3

このメソッドはSQL/MM仕様の実装です。 SQL-MM IEC 13249-3: 5.1.16

この関数は3次元に対応し、Z値を削除しません。

MULTILINESTRING と MULTIPOINT の凸包の計算。

コード
SELECT ST_ConvexHull(ST_Collect(ST_GeomFromText('MULTILINESTRING((100 190,10 8),(150 10,20 30))'),
            ST_GeomFromText('MULTIPOINT(50 5,150 30,50 10,10 10)')
            ));
出力
st_astext
-----------
POLYGON((50 5,10 8,10 10,100 190,150 30,150 10,50 5))
(1 row)
Geometry figure for visual-st-convexhull-01

ST_Collect を使ってジオメトリー集合の凸包を計算します。

この例ではポイント観察から感染領域の見積もりを返します。

コード
SELECT d.disease_type,
    ST_ConvexHull(ST_Collect(d.geom)) As geom
    FROM disease_obs As d
    GROUP BY d.disease_type;