Definition
ST_NumPoints gibt die Anzahl von Punkten (Stützpunkten) in einer Geometrie zurück.
Bei Polygonen werden sowohl die Anfangs- und Endstützpunkte gezählt, obwohl sie sich an derselben Position befinden.
Beachten Sie, dass sich diese Anzahl vom Attribut NUMPTS des Typs ST_Geometry unterscheidet. Das Attribut NUMPTS enthält die Anzahl der Stützpunkte in allen Teilen der Geometrie, einschließlich der Trennzeichen zwischen Teilen. Es gibt einen Trennzeichen zwischen jedem Teil. Beispielsweise verfügt ein mehrteiliger Linestring mit drei Teilen über zwei Trennzeichen. Im Attribut NUMPTS wird jedes Trennzeichen als Stützpunkt gezählt. Die Funktion ST_NumPoints berücksichtigt dagegen die Trennzeichen nicht in der Anzahl der Stützpunkte.
Syntax
Oracle und PostgreSQL
sde.st_numpoints (geometry1 sde.st_geometry)
SQLite
st_numpoints (geometry1 geometryblob)
Rückgabetyp
Ganzzahl
Beispiel
Die Tabelle "numpoints_test" wird mit der Spalte "geotype" erstellt, die den in der g1-Spalte gespeicherten Geometrietyp enthält.
Mit der INSERT-Anweisung werden ein Punkt, ein Linestrings und ein Polygon in die Tabelle eingefügt.
Die SELECT-Abfrage verwendet die Funktion "ST_NumPoints", um die Anzahl der Punkte in jedem Feature für jeden Feature-Typ abzurufen.
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)', 4326)
);
INSERT INTO NUMPOINTS_TEST VALUES (
'linestring',
sde.st_linefromtext ('linestring (10.02 20.01, 23.73 21.92)', 4326)
);
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))', 4326)
);
SELECT geotype, sde.st_numpoints (g1) Number_of_points
FROM NUMPOINTS_TEST;
GEOTYPE Number_of_points
point 1
linestring 2
polygon 5
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)', 4326)
);
INSERT INTO numpoints_test VALUES (
'linestring',
sde.st_linestring ('linestring (10.02 20.01, 23.73 21.92)', 4326)
);
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))', 4326)
);
SELECT geotype, sde.st_numpoints (g1)
AS Number_of_points
FROM numpoints_test;
geotype number_of_points
point 1
linestring 2
polygon 5
SQLite
CREATE TABLE numpoints_test (
geotype text(12)
);
SELECT AddGeometryColumn(
NULL,
'numpoints_test',
'g1',
4326,
'geometry',
'xy',
'null'
);
INSERT INTO numpoints_test VALUES (
'point',
st_point ('point (10.02 20.01)', 4326)
);
INSERT INTO numpoints_test VALUES (
'linestring',
st_linestring ('linestring (10.02 20.01, 23.73 21.92)', 4326)
);
INSERT INTO numpoints_test VALUES (
'polygon',
st_polygon ('polygon ((10.02 20.01, 23.73 21.92, 24.51 12.98, 11.64 13.42, 10.02 20.01))', 4326)
);
SELECT geotype AS "Type of geometry", st_numpoints (g1) AS "Number of points"
FROM numpoints_test;
Type of geometry Number of points
point 1
linestring 2
polygon 5