카테고리:

지리 공간 함수

ST_NPOINTS , ST_NUMPOINTS

GEOGRAPHY 또는 GEOGRAPHY 오브젝트의 점 개수를 반환합니다.

구문

ST_NPOINTS( <geography_or_geometry_expression> )
Copy

인자

geography_or_geometry_expression

인자는 GEOGRAPHY 또는 GEOMETRY 형식의 식이어야 합니다.

반환

INTEGER 형식의 값을 반환합니다.

사용법 노트

  • 각 Polygon 루프는 시작점을 두 번 나열합니다(한 번은 시작점, 한 번은 끝점). ST_NPOINTS는 두 발생을 모두 계산합니다. 예를 들어, 삼각형 Polygon이 주어지면 ST_NPOINTS는 3이 아니라 4를 반환합니다.

  • ST_NUMPOINTS는 ST_NPOINTS의 별칭입니다.

    참고

    일부 다른 시스템에서 ST_NUMPOINTS는 ST_NPOINTS와는 다르게 작동하며 LineString / MultiLineString 오브젝트에 대해서만 점의 개수를 반환합니다.

GEOGRAPHY 예

이는 단순한 Polygon의 점 개수를 보여줍니다.

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
Copy
SELECT ST_NPOINTS(g1) 
    FROM geospatial_table_01;
+----------------+
| ST_NPOINTS(G1) |
|----------------|
|              5 |
+----------------+
Copy

GEOMETRY 예

다음 예제에서는 ST_NPOINTS 함수의 사용 방법을 보여줍니다.

CREATE OR REPLACE TABLE geometry_shapes (g GEOMETRY);
INSERT INTO geometry_shapes VALUES
    ('POINT(66 12)'),
    ('MULTIPOINT((45 21), (12 54))'),
    ('LINESTRING(40 60, 50 50, 60 40)'),
    ('MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))'),
    ('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))'),
    ('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))'),
    ('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')
    ;

SELECT ST_NPOINTS(g), ST_ASWKT(g) FROM geometry_shapes;
Copy
+---------------+-------------------------------------------------------------------------------------------------+
| ST_NPOINTS(G) | ST_ASWKT(G)                                                                                     |
|---------------+-------------------------------------------------------------------------------------------------|
|             1 | POINT(66 12)                                                                                    |
|             2 | MULTIPOINT((45 21),(12 54))                                                                     |
|             3 | LINESTRING(40 60,50 50,60 40)                                                                   |
|             5 | MULTILINESTRING((1 1,32 17),(33 12,73 49,87.1 6.1))                                             |
|             5 | POLYGON((17 17,17 30,30 30,30 17,17 17))                                                        |
|             8 | MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))                            |
|             8 | GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60,50 50,60 40),POINT(99 11)) |
+---------------+-------------------------------------------------------------------------------------------------+
Copy