ST_NumPoints

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

Verwandte Themen

5/10/2014