ST_PointFromText(), ST_LineFromText(), ST_PolyFromText() în MySQL

Creează un punct, o linie sau un poligon din text WKT și verifică totodată că textul are tipul cerut.

Sintaxă
ST_PointFromText(wkt [, srid [, optiuni]])
ST_LineFromText(wkt [, srid [, optiuni]])
ST_PolyFromText(wkt [, srid [, optiuni]])

Ce face ST_PointFromText(), ST_LineFromText(), ST_PolyFromText()

Funcțiile funcționează ca ST_GeomFromText(), dar acceptă doar un anumit tip de geometrie: ST_PointFromText() doar POINT, ST_LineFromText() doar LINESTRING, ST_PolyFromText() doar POLYGON. Dacă textul are alt tip, primești eroarea „WKT value is a geometry of unexpected type”.

Sinonime: ST_LineStringFromText() pentru ST_LineFromText() și ST_PolygonFromText() pentru ST_PolyFromText(). Parametrii srid și optiuni au același rol ca la ST_GeomFromText().

Parametri

Parametru Descriere
wkt Textul geometriei, de tipul potrivit funcției.
srid Opțional: sistemul de coordonate.
optiuni Opțional: ordinea axelor, de exemplu 'axis-order=long-lat'.

Ce returnează

Un POINT, LINESTRING sau POLYGON.

Exemple

Exemplul 1: Câte o geometrie din fiecare tip

SELECT ST_AsText(ST_PointFromText('POINT(2 6)')) AS punct,
       ST_Length(ST_LineFromText('LINESTRING(0 0,3 0,3 4)')) AS lungime_linie,
       ST_Area(ST_PolyFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))')) AS arie_poligon;

Rezultat

+------------+---------------+--------------+
| punct      | lungime_linie | arie_poligon |
+------------+---------------+--------------+
| POINT(2 6) |             7 |           16 |
+------------+---------------+--------------+

Exemplul 2: Sinonimele și SRID-ul

SET @traseu = ST_LineStringFromText('LINESTRING(47.1585 27.6014, 46.7712 23.6236)', 4326);
SET @zona = ST_PolygonFromText('POLYGON((0 0,2 0,2 2,0 0))');

SELECT ROUND(ST_Length(@traseu) / 1000) AS km_iasi_cluj,
       ST_SRID(@traseu) AS srid,
       ST_Area(@zona) AS arie;

Rezultat

+--------------+------+------+
| km_iasi_cluj | srid | arie |
+--------------+------+------+
|          306 | 4326 |    2 |
+--------------+------+------+

Greșeli frecvente

  • Folosești ST_PointFromText() pentru orice text primit de la utilizator. Dacă tipul nu se potrivește, interogarea se oprește cu eroare; pentru tipuri amestecate folosește ST_GeomFromText().

Comenzi înrudite

  • ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.
  • ST_MPointFromText() și celelalte funcții WKT pentru colecții: Creează din text WKT geometrii compuse: MULTIPOINT, MULTILINESTRING, MULTIPOLYGON sau GEOMETRYCOLLECTION.
  • Point(): Creează un punct din coordonatele lui x și y; este cel mai simplu mod de a construi o geometrie.
  • LineString(): Construiește o linie frântă (LINESTRING) din două sau mai multe puncte.
  • Polygon(): Construiește un poligon din unul sau mai multe inele (LineString-uri închise).