カテゴリ:

地理空間関数

ST_NPOINTS , ST_NUMPOINTS

GEOGRAPHY または GEOGRAPHY オブジェクトのポイント数を返します。

構文

ST_NPOINTS( <geography_or_geometry_expression> )
Copy

引数

geography_or_geometry_expression

引数は型 GEOGRAPHY または GEOMETRY の式にする必要があります。

戻り値

INTEGER 型の値を返します。

使用上の注意

  • 各ポリゴンのループは、開始するポイントを2回リストします(開始点として1回、終了点として1回)。ST_NPOINTS は、両方の発生をカウントします。たとえば、三角形のポリゴンが指定されている場合、 ST_NPOINTS は3ではなく4を返します。

  • ST_NUMPOINTS は、 ST_NPOINTS のエイリアスです。

    注釈

    他の一部のシステムでは、 ST_NUMPOINTS は ST_NPOINTS とは異なる動作をし、 LineString / MultiLineString オブジェクトのみのポイント数を返します。

GEOGRAPHY 例

これは、単純なポリゴンのポイント数を示しています。

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