Ce face LineString()
LineString() unește punctele primite, în ordine, cu segmente drepte. O linie reprezintă un traseu: un drum, o rută de autobuz, un râu.
Sunt necesare cel puțin două puncte. Pe serverul MySQL actual, un singur punct produce eroarea „Invalid GIS data” (manualul spune că rezultatul ar fi NULL).
Parametri
| Parametru | Descriere |
|---|---|
punct1, punct2, ... |
Valori POINT (de exemplu create cu Point()). |
Ce returnează
O valoare LINESTRING.
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 traseu din trei puncte
SET @traseu = LineString(Point(0, 0), Point(3, 0), Point(3, 4));
SELECT ST_AsText(@traseu) AS traseu,
ST_NumPoints(@traseu) AS puncte,
ST_Length(@traseu) AS lungime;
Rezultat
+-------------------------+--------+---------+
| traseu | puncte | lungime |
+-------------------------+--------+---------+
| LINESTRING(0 0,3 0,3 4) | 3 | 7 |
+-------------------------+--------+---------+
Exemplul 2: Linie construită din coloanele unui tabel
SELECT ST_AsText(LineString(a.loc, b.loc)) AS drum, ST_Length(LineString(a.loc, b.loc)) AS km
FROM magazine a JOIN magazine b ON a.id = 1 AND b.id = 3;
Rezultat
+---------------------+------------------+
| drum | km |
+---------------------+------------------+
| LINESTRING(1 1,5 3) | 4.47213595499958 |
+---------------------+------------------+
Greșeli frecvente
- Dai puncte de tipuri diferite de SRID (unul cu 0, altul cu 4326). Toate punctele unei geometrii trebuie să aibă același sistem de coordonate.
Comenzi înrudite
Point(): Creează un punct din coordonatele lui x și y; este cel mai simplu mod de a construi o geometrie.Polygon(): Construiește un poligon din unul sau mai multe inele (LineString-uri închise).ST_Length(): Returnează lungimea unei linii (sau suma lungimilor dintr-un MULTILINESTRING); pe SRID 4326, în metri.