メインコンテンツまでスキップ
に最終更新

ST_NUMPOINTS

説明​

ジオメトリオブジェクトに含まれる頂点(点)の総数を返します。ジオメトリの種類によって数え方は異なります。Point は 1、LineString は頂点の数、Polygon はすべてのリングに含まれる頂点の総数(始点と同じ位置にある終点を含む)、MultiPolygon はすべての構成ポリゴンに含まれる点の数の合計を返します。

構文​

ST_NUMPOINTS( <shape> )

パラメータ​

パラメータ説明
<shape>入力するジオメトリ。型は GEOMETRY、または GEOMETRY に変換できる VARCHAR(WKT 形式)です。

戻り値​

ジオメトリオブジェクトに含まれる点の総数を表す BIGINT 値を返します。

ST_NUMPOINTS には、次の境界ケースがあります。

  • 入力パラメータが NULL の場合、NULL を返します。
  • 入力パラメータを有効なジオメトリオブジェクトとして解析できない場合、NULL を返します。
  • POINT の場合、1 を返します。
  • LINESTRING の場合、線の頂点の数を返します。
  • POLYGON の場合、すべてのリング(外周と内周)に含まれる頂点の総数を返します。各リングには、始点と同じ位置にある終点も含まれます。
  • MULTIPOLYGON の場合、すべての構成ポリゴンに含まれる点の数の合計を返します。
  • CIRCLE の場合、-1 を返します(円には個別の頂点がありません)。

例​

Point に含まれる点の数

SELECT ST_NUMPOINTS(ST_Point(1, 2));
+------------------------------+
| ST_NUMPOINTS(ST_Point(1, 2)) |
+------------------------------+
| 1 |
+------------------------------+

LineString に含まれる点の数

SELECT ST_NUMPOINTS(ST_GeometryFromText('LINESTRING(0 0, 1 1, 2 2)'));
+-------------------------------------------------------------------+
| ST_NUMPOINTS(ST_GeometryFromText('LINESTRING(0 0, 1 1, 2 2)')) |
+-------------------------------------------------------------------+
| 3 |
+-------------------------------------------------------------------+

Polygon(正方形)に含まれる点の数

SELECT ST_NUMPOINTS(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'));
+----------------------------------------------------------------------------+
| ST_NUMPOINTS(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) |
+----------------------------------------------------------------------------+
| 5 |
+----------------------------------------------------------------------------+

穴のある Polygon に含まれる点の数

SELECT ST_NUMPOINTS(ST_GeometryFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 2 1, 2 2, 1 2, 1 1))'));
+-----------------------------------------------------------------------------------------------------------+
| ST_NUMPOINTS(ST_GeometryFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 2 1, 2 2, 1 2, 1 1))')) |
+-----------------------------------------------------------------------------------------------------------+
| 10 |
+-----------------------------------------------------------------------------------------------------------+

MultiPolygon に含まれる点の数

SELECT ST_NUMPOINTS(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'));
+--------------------------------------------------------------------------------------------------------------+
| ST_NUMPOINTS(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))')) |
+--------------------------------------------------------------------------------------------------------------+
| 10 |
+--------------------------------------------------------------------------------------------------------------+

Circle に含まれる点の数(-1 を返す)

SELECT ST_NUMPOINTS(ST_Circle(0, 0, 100));
+--------------------------------------+
| ST_NUMPOINTS(ST_Circle(0, 0, 100)) |
+--------------------------------------+
| -1 |
+--------------------------------------+

NULL パラメータ

SELECT ST_NUMPOINTS(NULL);
+---------------------+
| ST_NUMPOINTS(NULL) |
+---------------------+
| NULL |
+---------------------+

無効なパラメータ(NULL を返す)

SELECT ST_NUMPOINTS(ST_GeometryFromText('INVALID'));
+------------------------------------------------+
| ST_NUMPOINTS(ST_GeometryFromText('INVALID')) |
+------------------------------------------------+
| NULL |
+------------------------------------------------+