ST_NumPoints

定義

ST_NumPoints は、ST_Geometry 内にあるポイント(頂点)の数を返します。

ポリゴンの場合、始点の頂点と終点の頂点が同じ位置にあっても、別々にカウントされます。

この数値は、ST_Geometry タイプの NUMPTS 属性とは違いますので注意してください。NUMPTS 属性では、パート間のセパレータを含む、ジオメトリのすべての部分における頂点がカウントされます。各パートの間には 1 つのセパレータがあります。たとえば、3 つの部分があるマルチパート ラインストリングには 2 つのセパレータがあります。NUMPTS 属性では、各セパレータは 1 つの頂点としてカウントされます。それに対して ST_NumPoints 関数では、セパレータは頂点としてカウントされません。

構文

sde.st_numpoints (g1 sde.st_geometry)

戻り値のタイプ

Integer

geotype 列と、ST_Geometry タイプを格納する g1 ジオメトリ列を持つ numpoints_test テーブルを作成します。

INSERT ステートメントは、ポイント、ラインストリング、ポリゴンを挿入します。

Oracle

CREATE TABLE numpoints_test (geotype varchar(12), g1 sde.st_geometry);

INSERT INTO NUMPOINTS_TEST VALUES (
'point',
sde.st_pointfromtext ('point (10.02 20.01)', 0)
);

INSERT INTO NUMPOINTS_TEST VALUES (
'linestring',
sde.st_linefromtext ('linestring (10.02 20.01, 23.73 21.92)', 0)
);

INSERT INTO NUMPOINTS_TEST VALUES (
'polygon',
sde.st_polyfromtext ('polygon ((10.02 20.01, 23.73 21.92, 24.51 12.98,
11.64 13.42, 10.02 20.01))', 0)
);

PostgreSQL

CREATE TABLE numpoints_test (geotype varchar(12), g1 sde.st_geometry);

INSERT INTO numpoints_test VALUES (
'point',
sde.st_point ('point (10.02 20.01)', 0)
);

INSERT INTO numpoints_test VALUES (
'linestring',
sde.st_linestring ('linestring (10.02 20.01, 23.73 21.92)', 0)
);

INSERT INTO numpoints_test VALUES (
'polygon',
sde.st_polygon ('polygon ((10.02 20.01, 23.73 21.92, 24.51 12.98,
11.64 13.42, 10.02 20.01))', 0)
);

クエリは、ジオメトリ タイプと、各フィーチャ内のポイント数をリストします。

Oracle

SELECT geotype, sde.st_numpoints (g1) Number_of_points
FROM NUMPOINTS_TEST;

GEOTYPE     Number_of_points

point                       1
linestring                  2
polygon                     5

PostgreSQL

SELECT geotype, sde.st_numpoints (g1) AS Number_of_points
FROM numpoints_test;

geotype     number_of_points

point                       1
linestring                  2
polygon                     5

7/10/2012