최종 수정: 에
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 |
+------------------------------------------------+