Ce face ST_GeometryN() și ST_NumGeometries()
Funcțiile lucrează cu GEOMETRYCOLLECTION și cu tipurile Multi (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON). Elementele sunt numerotate de la 1.
Pentru o geometrie simplă (de exemplu un punct) și pentru o poziție inexistentă (inclusiv 0), rezultatul este NULL.
Parametri
| Parametru | Descriere |
|---|---|
colectie |
O colecție sau o geometrie Multi. |
n |
Poziția elementului, de la 1. |
Ce returnează
ST_GeometryN(): o geometrie; ST_NumGeometries(): un număr întreg.
Exemple
Exemplul 1: Elementele unei colecții
SET @colectie = ST_GeomFromText('GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 1,5 3),POLYGON((0 0,4 0,4 4,0 0)))');
SELECT ST_NumGeometries(@colectie) AS elemente,
ST_AsText(ST_GeometryN(@colectie, 2)) AS al_doilea,
ST_GeometryType(ST_GeometryN(@colectie, 3)) AS tipul_celui_de_al_treilea;
SELECT ST_NumGeometries(ST_GeomFromText('MULTIPOINT(1 1,2 6,5 3)')) AS puncte;
Rezultat
+----------+---------------------+---------------------------+
| elemente | al_doilea | tipul_celui_de_al_treilea |
+----------+---------------------+---------------------------+
| 3 | LINESTRING(1 1,5 3) | POLYGON |
+----------+---------------------+---------------------------+
+--------+
| puncte |
+--------+
| 3 |
+--------+
Greșeli frecvente
- Numerotezi de la 0. Primul element este
ST_GeometryN(c, 1).
Comenzi înrudite
GeomCollection(): Pune geometrii de orice tip (puncte, linii, poligoane) într-o colecție; fără argumente creează o geometrie goală.MultiPoint(), MultiLineString(), MultiPolygon(): Grupează mai multe puncte, linii sau poligoane într-o singură geometrie de tip „Multi”.ST_Collect(): Funcție de agregare: strânge geometriile din mai multe rânduri într-o singură geometrie Multi sau colecție.