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

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