Name

ST_Boundary — ジオメトリの境界を返します。

Synopsis

geometry ST_Boundary(geometry geomA);

説明

ジオメトリの組み合わせ境界の閉包を返します (訳注: ラインストリングは端点、ポリゴンはエッジ、複合オブジェクトは境界のうち奇数番)。組み合わせ境界はOGC仕様の3.12.3.2節に記述されています。結果として出てくる境界は、OGC SPEC 3.12.2で議論されているように、ジオメトリプリミティブを使って表現できます。

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

[Note]

2.0.0より前の版では、この関数はGEOMETRYCOLLECTION.を与えると例外を投げました。2.0.0以上では代わりにNULLが返ります (非対応入力)。

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

OGC SPEC s2.1.1.1

このメソッドはSQL/MM仕様の実装です。

SQL-MM IEC 13249-3: 5.1.17

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

Enhanced: 2.1.0 三角対応が導入されました。

Changed: 3.2.0 TINに対応しました。GEOSを使いません。曲線を線形化しません。

境界ポイントを重ねたラインストリング

SELECT ST_Boundary(geom)
FROM (SELECT 'LINESTRING(100 150,50 60, 70 80, 160 170)'::geometry As geom) As f;
                                


ST_AsText output

MULTIPOINT((100 150),(160 170))

境界マルチラインストリングを重ねたポリゴンの穴

SELECT ST_Boundary(geom)
FROM (SELECT
'POLYGON (( 10 130, 50 190, 110 190, 140 150, 150 80, 100 10, 20 40, 10 130 ),
        ( 70 40, 100 50, 120 80, 80 110, 50 90, 70 40 ))'::geometry As geom) As f;
                                


ST_AsText output

MULTILINESTRING((10 130,50 190,110 190,140 150,150 80,100 10,20 40,10 130),
        (70 40,100 50,120 80,80 110,50 90,70 40))

SELECT ST_AsText(ST_Boundary(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)')));
st_astext
-----------
MULTIPOINT((1 1),(-1 1))

SELECT ST_AsText(ST_Boundary(ST_GeomFromText('POLYGON((1 1,0 0, -1 1, 1 1))')));
st_astext
----------
LINESTRING(1 1,0 0,-1 1,1 1)

--Using a 3d polygon
SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('POLYGON((1 1 1,0 0 1, -1 1 1, 1 1 1))')));

st_asewkt
-----------------------------------
LINESTRING(1 1 1,0 0 1,-1 1 1,1 1 1)

--Using a 3d multilinestring
SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('MULTILINESTRING((1 1 1,0 0 0.5, -1 1 1),(1 1 0.5,0 0 0.5, -1 1 0.5, 1 1 0.5) )')));

st_asewkt
----------
MULTIPOINT((-1 1 1),(1 1 0.75))

関連情報

ST_AsText, ST_ExteriorRing, ST_MakePolygon