に最終更新
ST_NUMPOINTS
説明
ジオメトリオブジェクトに含まれる頂点(点)の総数を返します。ジオメトリの種類によって数え方が異なります。Point は 1、LineString は頂点の数、Polygon はすべてのリングに含まれる頂点の総数(閉じるための点を含む)、MultiPolygon は各ポリゴンの点の数の合計を返します。
注記
4.1.2 以降
構文
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 |
+------------------------------------------------+