Последнее обновление
ST_NUMGEOMETRIES
Описание
Возвращает количество геометрических компонентов в геометрическом объекте. Для типов, не являющихся коллекциями (Point, LineString, Polygon, Circle), всегда возвращает 1. Для типов коллекций (MultiPolygon) возвращает количество геометрических компонентов в коллекции.
примечание
Начиная с версии 4.1.2
Синтаксис
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 |
+--------------------------------------------------+