ST_MPointFromText() și celelalte funcții WKT pentru colecții în MySQL

Creează din text WKT geometrii compuse: MULTIPOINT, MULTILINESTRING, MULTIPOLYGON sau GEOMETRYCOLLECTION.

Sintaxă
ST_MPointFromText(wkt [, srid [, optiuni]])
ST_MLineFromText(wkt [, srid [, optiuni]])
ST_MPolyFromText(wkt [, srid [, optiuni]])
ST_GeomCollFromText(wkt [, srid [, optiuni]])

Ce face ST_MPointFromText() și celelalte funcții WKT pentru colecții

Fiecare funcție acceptă un singur tip de geometrie compusă: ST_MPointFromText() (sinonim ST_MultiPointFromText()), ST_MLineFromText() (sinonim ST_MultiLineStringFromText()), ST_MPolyFromText() (sinonim ST_MultiPolygonFromText()).

ST_GeomCollFromText() (sinonime ST_GeometryCollectionFromText() și ST_GeomCollFromTxt()) citește o colecție. Acceptă și un text MULTI..., pentru că și acela este o colecție de geometrii. Într-un MULTIPOINT, punctele pot fi scrise cu sau fără paranteze: MULTIPOINT(1 1,2 2) și MULTIPOINT((1 1),(2 2)) sunt la fel.

Parametri

Parametru Descriere
wkt Textul geometriei compuse.
srid Opțional: sistemul de coordonate.
optiuni Opțional: ordinea axelor.

Ce returnează

Geometria compusă corespunzătoare.

Exemple

Exemplul 1: Cele trei tipuri Multi

SELECT ST_NumGeometries(ST_MPointFromText('MULTIPOINT(1 1,2 6,5 3)')) AS puncte,
       ST_Length(ST_MLineFromText('MULTILINESTRING((0 0,3 0),(3 4,6 4))')) AS lungime_totala,
       ST_Area(ST_MPolyFromText('MULTIPOLYGON(((0 0,4 0,4 4,0 0)),((10 0,12 0,12 2,10 0)))')) AS arie_totala;

Rezultat

+--------+----------------+-------------+
| puncte | lungime_totala | arie_totala |
+--------+----------------+-------------+
|      3 |              6 |          10 |
+--------+----------------+-------------+

Exemplul 2: Colecții și sinonime

SELECT ST_AsText(ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 1,5 3))')) AS colectie,
       ST_AsText(ST_GeomCollFromTxt('GEOMETRYCOLLECTION()')) AS goala,
       ST_NumGeometries(ST_GeometryCollectionFromText('MULTIPOINT((1 1),(2 2))')) AS din_multi;

SELECT ST_AsText(ST_MultiPointFromText('MULTIPOINT((1 1),(2 2))')) AS mp,
       ST_GeometryType(ST_MultiLineStringFromText('MULTILINESTRING((0 0,1 1))')) AS ml,
       ST_GeometryType(ST_MultiPolygonFromText('MULTIPOLYGON(((0 0,1 0,1 1,0 0)))')) AS mpo;

Rezultat

+----------------------------------------------------+--------------------------+-----------+
| colectie                                           | goala                    | din_multi |
+----------------------------------------------------+--------------------------+-----------+
| GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 1,5 3)) | GEOMETRYCOLLECTION EMPTY |         2 |
+----------------------------------------------------+--------------------------+-----------+
+-------------------------+-----------------+--------------+
| mp                      | ml              | mpo          |
+-------------------------+-----------------+--------------+
| MULTIPOINT((1 1),(2 2)) | MULTILINESTRING | MULTIPOLYGON |
+-------------------------+-----------------+--------------+

Greșeli frecvente

  • Uiți parantezele duble la poligoane: într-un MULTIPOLYGON, fiecare poligon are propriile paranteze, iar fiecare inel are încă un rând de paranteze: MULTIPOLYGON(((...)),((...))).

Comenzi înrudite