一番単純な例。
SELECT
ST_NPoints(
GeomFromText(
'POINT(0 0)',
0
)
) AS ST_NPoints
;
-- 1
LINESTRING
は、それを構成する点の数を返す。
SELECT
ST_NPoints(
GeomFromText(
'LINESTRING(0 0, 1 1)',
0
)
) AS ST_NPoints
;
-- 2
MULTI~
系のジオメトリは、含まれるジオメトリそれぞれの頂点数の合計を返す。
SELECT
ST_NPoints(
GeomFromText(
'MULTIPOINT((0 0), (1 1))',
0
)
) AS ST_NPoints
;
-- 2
SELECT
ST_NPoints(
GeomFromText(
'MULTILINESTRING((0 0, 1 1), (2 2, 2 3, 2 5))',
0
)
) AS ST_NPoints
;
-- 5
注意が必要なのがPOLYGON
で、リングを閉じるために始点と終点で同じ頂点を二度記述するため、そこが二重カウントされる。
以下の例では、三角形を与えているが(0, 0)
が二重カウントされるので、ST_NPoints
の戻り値としては4
となる。
SELECT
ST_NPoints(
GeomFromText(
'POLYGON((0 0, 1 1, 0 1, 0 0))',
0
)
) AS ST_NPoints
;
-- 4
GEOMETRYCOLLECTION
もMULTI~
と同様に、含まれるジオメトリの頂点数の合計を返す。
SELECT
ST_NPoints(
GeomFromText(
'GEOMETRYCOLLECTION(' ||
'MULTIPOINT((0 4), (7 8)), ' ||
'LINESTRING(2 3, 10 11)' ||
')',
0
)
) AS ST_NPoints
;
-- 4