ST_GeometryN() și ST_NumGeometries() în MySQL

Returnează a n-a geometrie dintr-o colecție sau dintr-o geometrie Multi, respectiv numărul de elemente.

Sintaxă
ST_GeometryN(colectie, n)
ST_NumGeometries(colectie)

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.