ST_NumPoints

Определение

ST_NumPoints возвращает число точек (вершин) в ST_Geometry.

Для полигонов учитываются начальные и конечные вершины, даже если они занимают одну точку.

Учтите, что это число отличается от значения атрибута NUMPTS типа ST_Geometry. Атрибут NUMPTS содержит число вершин во всех частях геометрии, в том числе разделители частей. Между каждой частью есть один разделитель. Например, у строки linestring с тремя частями два разделителя. В атрибуте NUMPTS каждый разделитель считается одной вершиной. И наоборот, функция ST_NumPoints не включает разделители в число вершин.

Синтаксис

sde.st_numpoints (g1 sde.st_geometry)

Тип возврата

Integer

Пример

Таблица numpoints_test создается со столбцом geotype, который содержит тип ST_Geometry, хранимый в столбце g1 geometry.

Инструкция INSERT вставляет точку, строку linestring и полигон.

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
12/10/2012