Перейти к содержимому
Последнее обновление

ST_NUMGEOMETRIES

Описание​

Возвращает количество геометрических компонентов, содержащихся в геометрическом объекте. Для типов, не являющихся коллекциями (Point, LineString, Polygon, Circle), всегда возвращает 1. Для типов коллекций (MultiPolygon) возвращает количество геометрических компонентов в коллекции.

Синтаксис​

ST_NUMGEOMETRIES( <shape> )

Параметры​

ПараметрОписание
<shape>Входной геометрический объект типа GEOMETRY или строка типа VARCHAR (в формате WKT), которую можно преобразовать в GEOMETRY.

Возвращаемое значение​

Возвращает значение типа BIGINT, равное количеству геометрических компонентов в геометрическом объекте.

ST_NUMGEOMETRIES обрабатывает следующие особые случаи:

  • Если входной параметр равен NULL, возвращает NULL.
  • Если входной параметр не удаётся распознать как допустимый геометрический объект, возвращает NULL.
  • Для типов, не являющихся коллекциями (POINT, LINESTRING, POLYGON, CIRCLE), всегда возвращает 1.
  • Для MULTIPOLYGON возвращает количество полигонов в коллекции.

Пример​

Количество геометрий в Point

SELECT ST_NUMGEOMETRIES(ST_Point(1, 2));
+----------------------------------+
| ST_NUMGEOMETRIES(ST_Point(1, 2)) |
+----------------------------------+
| 1 |
+----------------------------------+

Количество геометрий в Polygon

SELECT ST_NUMGEOMETRIES(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'));
+------------------------------------------------------------------------------+
| ST_NUMGEOMETRIES(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) |
+------------------------------------------------------------------------------+
| 1 |
+------------------------------------------------------------------------------+

Количество геометрий в MultiPolygon с двумя полигонами

SELECT ST_NUMGEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'));
+------------------------------------------------------------------------------------------------------------------+
| ST_NUMGEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))')) |
+------------------------------------------------------------------------------------------------------------------+
| 2 |
+------------------------------------------------------------------------------------------------------------------+

Количество геометрий в Circle

SELECT ST_NUMGEOMETRIES(ST_Circle(0, 0, 100));
+----------------------------------------+
| ST_NUMGEOMETRIES(ST_Circle(0, 0, 100)) |
+----------------------------------------+
| 1 |
+----------------------------------------+

Параметр NULL

SELECT ST_NUMGEOMETRIES(NULL);
+------------------------+
| ST_NUMGEOMETRIES(NULL) |
+------------------------+
| NULL |
+------------------------+

Недопустимый параметр (возвращает NULL)

SELECT ST_NUMGEOMETRIES(ST_GeometryFromText('INVALID'));
+--------------------------------------------------+
| ST_NUMGEOMETRIES(ST_GeometryFromText('INVALID')) |
+--------------------------------------------------+
| NULL |
+--------------------------------------------------+