Ce face Point()
Point() construiește direct o valoare de tip POINT, fără text WKT. Rezultatul are SRID 0, adică un plan cartezian obișnuit (coordonate x, y fără unitate). Este potrivit pentru planuri, hărți locale sau jocuri.
Pentru puncte reale pe glob (latitudine și longitudine) ai nevoie de SRID 4326. Cu Point() se face așa: ST_SRID(Point(longitudine, latitudine), 4326). Varianta recomandată de manual este ST_GeomFromText('POINT(lat long)', 4326), care creează direct punctul în sistemul corect.
Valoarea rezultată este binară; ca s-o citești, transform-o în text cu ST_AsText().
Parametri
| Parametru | Descriere |
|---|---|
x |
Prima coordonată (pe plan: orizontala). |
y |
A doua coordonată (pe plan: verticala). |
Ce returnează
O valoare POINT cu SRID 0.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE magazine (
id INT PRIMARY KEY,
nume VARCHAR(20),
loc POINT NOT NULL
);
INSERT INTO magazine VALUES
(1, 'Librăria Ana', Point(1, 1)),
(2, 'Florăria Dan', Point(2, 6)),
(3, 'Brutăria Ioana', Point(5, 3)),
(4, 'Cafeneaua Mara', Point(4, 2)),
(5, 'Atelierul Radu', Point(12, 1));
Exemplul 1: Un punct și coordonatele lui
SELECT ST_AsText(Point(3, 4)) AS punct,
ST_X(Point(3, 4)) AS x,
ST_Y(Point(3, 4)) AS y,
ST_SRID(Point(3, 4)) AS srid;
Rezultat
+------------+------+------+------+
| punct | x | y | srid |
+------------+------+------+------+
| POINT(3 4) | 3 | 4 | 0 |
+------------+------+------+------+
Exemplul 2: Puncte salvate într-o coloană POINT
SELECT nume, ST_AsText(loc) AS pozitie
FROM magazine
ORDER BY id;
Rezultat
+-----------------+-------------+
| nume | pozitie |
+-----------------+-------------+
| Librăria Ana | POINT(1 1) |
| Florăria Dan | POINT(2 6) |
| Brutăria Ioana | POINT(5 3) |
| Cafeneaua Mara | POINT(4 2) |
| Atelierul Radu | POINT(12 1) |
+-----------------+-------------+
Exemplul 3: Punct geografic: Iași, cu longitudinea pe primul loc
SET @iasi = ST_SRID(Point(27.6014, 47.1585), 4326);
SELECT ST_Longitude(@iasi) AS longitudine,
ST_Latitude(@iasi) AS latitudine,
ST_AsText(@iasi) AS wkt;
Rezultat
+-------------+------------+------------------------+
| longitudine | latitudine | wkt |
+-------------+------------+------------------------+
| 27.6014 | 47.1585 | POINT(47.1585 27.6014) |
+-------------+------------+------------------------+
Greșeli frecvente
- Afișezi coloana direct, cu
SELECT loc. Primești octeți binari greu de citit; foloseșteST_AsText(loc). - Scrii
Point(47.1585, 27.6014)pentru Iași și apoi îl treci în SRID 4326.Point()primește longitudinea primul, deci ai obține un punct în Arabia Saudită. Ordinea corectă estePoint(27.6014, 47.1585).
Comenzi înrudite
ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.ST_X() și ST_Y(): Returnează coordonata X sau Y a unui punct; cu al doilea argument, returnează punctul cu coordonata schimbată.ST_SRID(): Returnează sistemul de coordonate (SRID) al unei geometrii sau, cu al doilea argument, îl schimbă fără a muta coordonatele.ST_AsText(): Transformă o geometrie în text WKT, ușor de citit: POINT(1 2), LINESTRING(…), POLYGON(…).