본문으로 건너뛰기
최종 수정: 에

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 |
+------------------------------------------------+