MultiPoint(), MultiLineString(), MultiPolygon() în MySQL

Grupează mai multe puncte, linii sau poligoane într-o singură geometrie de tip „Multi”.

Sintaxă
MultiPoint(punct1, punct2, ...)
MultiLineString(linie1, linie2, ...)
MultiPolygon(poligon1, poligon2, ...)

Ce face MultiPoint(), MultiLineString(), MultiPolygon()

Geometriile „Multi” țin mai multe elemente de același fel într-o singură valoare: toate sediile unei firme (MULTIPOINT), toate liniile unui tramvai (MULTILINESTRING) sau o țară cu insule (MULTIPOLYGON).

MultiPoint() primește puncte, MultiLineString() primește linii, iar MultiPolygon() primește poligoane. În textul WKT, fiecare punct dintr-un MULTIPOINT apare între paranteze.

Parametri

Parametru Descriere
punct / linie / poligon Geometriile grupate, toate de același tip.

Ce returnează

O valoare MULTIPOINT, MULTILINESTRING sau MULTIPOLYGON.

Exemple

Exemplul 1: Câte un exemplu din fiecare

SELECT ST_AsText(MultiPoint(Point(1, 1), Point(2, 6), Point(5, 3))) AS sedii;

SELECT ST_AsText(MultiLineString(
         LineString(Point(0, 0), Point(3, 0)),
         LineString(Point(3, 4), Point(6, 4)))) AS linii;

SELECT ST_AsText(MultiPolygon(
         Polygon(LineString(Point(0, 0), Point(2, 0), Point(2, 2), Point(0, 0))),
         Polygon(LineString(Point(5, 5), Point(6, 5), Point(6, 6), Point(5, 5))))) AS insule;

Rezultat

+-------------------------------+
| sedii                         |
+-------------------------------+
| MULTIPOINT((1 1),(2 6),(5 3)) |
+-------------------------------+
+--------------------------------------+
| linii                                |
+--------------------------------------+
| MULTILINESTRING((0 0,3 0),(3 4,6 4)) |
+--------------------------------------+
+-------------------------------------------------------+
| insule                                                |
+-------------------------------------------------------+
| MULTIPOLYGON(((0 0,2 0,2 2,0 0)),((5 5,6 5,6 6,5 5))) |
+-------------------------------------------------------+

Exemplul 2: Aria totală a unui MultiPolygon

SET @insule = MultiPolygon(
  Polygon(LineString(Point(0, 0), Point(4, 0), Point(4, 4), Point(0, 4), Point(0, 0))),
  Polygon(LineString(Point(10, 0), Point(12, 0), Point(12, 2), Point(10, 2), Point(10, 0)))
);

SELECT ST_NumGeometries(@insule) AS insule, ST_Area(@insule) AS arie_totala;

Rezultat

+--------+-------------+
| insule | arie_totala |
+--------+-------------+
|      2 |          20 |
+--------+-------------+

Greșeli frecvente

  • Amesteci tipuri: MultiPoint(Point(1, 1), LineString(...)). Pentru elemente de tipuri diferite folosește GeomCollection().

Comenzi înrudite

  • GeomCollection(): Pune geometrii de orice tip (puncte, linii, poligoane) într-o colecție; fără argumente creează o geometrie goală.
  • ST_Collect(): Funcție de agregare: strânge geometriile din mai multe rânduri într-o singură geometrie Multi sau colecție.
  • ST_GeometryN() și ST_NumGeometries(): Returnează a n-a geometrie dintr-o colecție sau dintr-o geometrie Multi, respectiv numărul de elemente.
  • Point(): Creează un punct din coordonatele lui x și y; este cel mai simplu mod de a construi o geometrie.