Ce face ST_Latitude() și ST_Longitude()
Funcțiile lucrează doar cu puncte într-un sistem geografic, cum este 4326. Pe un punct cu SRID 0 primești eroare, pentru că un plan cartezian nu are latitudine. Au apărut în MySQL 8.0.12.
Avantajul față de ST_X() și ST_Y(): numele spune exact ce primești, indiferent de ordinea axelor din sistemul de coordonate. Cu al doilea argument returnează punctul cu latitudinea (sau longitudinea) înlocuită; valoarea trebuie să fie în interval (latitudine între -90 și 90, longitudine între -180 și 180).
Parametri
| Parametru | Descriere |
|---|---|
punct |
Un POINT cu SRID geografic. |
latitudine_noua / longitudine_noua |
Opțional: noua valoare, în grade. |
Ce returnează
Un număr în grade sau, cu două argumente, un POINT.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
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: Coordonatele orașelor
SELECT nume, ST_Latitude(loc) AS latitudine, ST_Longitude(loc) AS longitudine
FROM orase
ORDER BY ST_Latitude(loc) DESC;
Rezultat
+-------------+------------+-------------+
| nume | latitudine | longitudine |
+-------------+------------+-------------+
| Iași | 47.1585 | 27.6014 |
| Cluj-Napoca | 46.7712 | 23.6236 |
| Timișoara | 45.7489 | 21.2087 |
| București | 44.4268 | 26.1025 |
| Constanța | 44.1598 | 28.6348 |
+-------------+------------+-------------+
Exemplul 2: Punct mutat pe aceeași latitudine
SET @iasi = ST_GeomFromText('POINT(47.1585 27.6014)', 4326);
SELECT ST_AsText(ST_Longitude(@iasi, 23.6236)) AS alt_punct,
ROUND(ST_Distance(@iasi, ST_Longitude(@iasi, 23.6236)) / 1000) AS km_spre_vest;
Rezultat
+------------------------+--------------+
| alt_punct | km_spre_vest |
+------------------------+--------------+
| POINT(47.1585 23.6236) | 302 |
+------------------------+--------------+
Greșeli frecvente
- Folosești funcțiile pe coloane fără SRID (SRID 0). Primești eroarea că sistemul nu este geografic; definește coloana cu
SRID 4326.
Comenzi înrudite
ST_X() și ST_Y(): Returnează coordonata X sau Y a unui punct; cu al doilea argument, returnează punctul cu coordonata schimbată.ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.ST_Distance_Sphere(): Returnează distanța pe o sferă (în metri) dintre două puncte; un calcul rapid, aproximativ, pentru coordonate GPS.