Ce face ST_AsText()
MySQL păstrează geometriile într-un format binar intern. ST_AsText() le transformă în textul WKT, pe care îl poți citi, afișa sau trimite altui program. ST_AsWKT() este sinonim.
Pentru SRID 4326, textul are implicit ordinea „latitudine longitudine”. Cu 'axis-order=long-lat' obții ordinea inversă, cerută de multe biblioteci de hărți. Colecția goală apare ca GEOMETRYCOLLECTION EMPTY, iar punctele dintr-un MULTIPOINT apar fiecare între paranteze.
Parametri
| Parametru | Descriere |
|---|---|
geometrie |
Valoarea spațială de afișat. |
optiuni |
Opțional: 'axis-order=lat-long', 'axis-order=long-lat' sau 'axis-order=srid-defined'. |
Ce returnează
Un text WKT; NULL dacă geometria este NULL.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE cartiere (
id INT PRIMARY KEY,
nume VARCHAR(20),
forma POLYGON NOT NULL
);
INSERT INTO cartiere VALUES
(1, 'Centru', ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))')),
(2, 'Copou', ST_GeomFromText('POLYGON((0 4,4 4,4 8,0 8,0 4))')),
(3, 'Tătărași', ST_GeomFromText('POLYGON((3 1,7 1,7 5,3 5,3 1))')),
(4, 'Galata', ST_GeomFromText('POLYGON((10 0,13 0,13 3,10 3,10 0))'));
CREATE TABLE orase (
id INT PRIMARY KEY,
nume VARCHAR(20),
loc POINT NOT NULL SRID 4326,
SPATIAL INDEX (loc)
);
INSERT INTO orase VALUES
(1, 'Iași', ST_GeomFromText('POINT(47.1585 27.6014)', 4326)),
(2, 'Cluj-Napoca', ST_GeomFromText('POINT(46.7712 23.6236)', 4326)),
(3, 'București', ST_GeomFromText('POINT(44.4268 26.1025)', 4326)),
(4, 'Timișoara', ST_GeomFromText('POINT(45.7489 21.2087)', 4326)),
(5, 'Constanța', ST_GeomFromText('POINT(44.1598 28.6348)', 4326));
Exemplul 1: Coloane spațiale afișate ca text
SELECT nume, ST_AsText(forma) AS wkt, ST_AsWKT(ST_Centroid(forma)) AS centru
FROM cartiere
ORDER BY id;
Rezultat
+-------------+-------------------------------------+-----------------+
| nume | wkt | centru |
+-------------+-------------------------------------+-----------------+
| Centru | POLYGON((0 0,4 0,4 4,0 4,0 0)) | POINT(2 2) |
| Copou | POLYGON((0 4,4 4,4 8,0 8,0 4)) | POINT(2 6) |
| Tătărași | POLYGON((3 1,7 1,7 5,3 5,3 1)) | POINT(5 3) |
| Galata | POLYGON((10 0,13 0,13 3,10 3,10 0)) | POINT(11.5 1.5) |
+-------------+-------------------------------------+-----------------+
Exemplul 2: Ordinea axelor pentru coordonate GPS
SELECT nume,
ST_AsText(loc) AS lat_long,
ST_AsText(loc, 'axis-order=long-lat') AS long_lat
FROM orase
WHERE id <= 2;
Rezultat
+-------------+------------------------+------------------------+
| nume | lat_long | long_lat |
+-------------+------------------------+------------------------+
| Iași | POINT(47.1585 27.6014) | POINT(27.6014 47.1585) |
| Cluj-Napoca | POINT(46.7712 23.6236) | POINT(23.6236 46.7712) |
+-------------+------------------------+------------------------+
Greșeli frecvente
- Compari geometrii cu
ST_AsText(a) = ST_AsText(b). Aceeași formă poate avea texte diferite (alt punct de pornire, puncte repetate); foloseșteST_Equals().
Comenzi înrudite
ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.ST_AsBinary(): Transformă o geometrie în formatul binar standard WKB („Well-Known Binary”), folosit la schimbul de date.ST_AsGeoJSON(): Transformă o geometrie în GeoJSON, formatul folosit de hărțile web (Leaflet, Mapbox, OpenLayers).ST_SwapXY(): Inversează coordonatele X și Y ale fiecărui punct dintr-o geometrie.