Ce face ST_StartPoint() și ST_EndPoint()
Pentru un traseu, ST_StartPoint() dă punctul de plecare, iar ST_EndPoint() destinația. Rezultatul este un POINT cu același SRID ca linia.
Cele două funcții sunt echivalente cu ST_PointN(linie, 1) și ST_PointN(linie, ST_NumPoints(linie)).
Parametri
| Parametru | Descriere |
|---|---|
linie |
Un LINESTRING. |
Ce returnează
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 trasee (
id INT PRIMARY KEY,
nume VARCHAR(20),
linie LINESTRING NOT NULL
);
INSERT INTO trasee VALUES
(1, 'Autobuz 28', ST_GeomFromText('LINESTRING(0 0,3 0,3 4,6 4)')),
(2, 'Tramvai 3', ST_GeomFromText('LINESTRING(1 6,1 2,5 2)')),
(3, 'Pistă biciclete', ST_GeomFromText('LINESTRING(0 0,2 2,0 4,0 0)'));
Exemplul 1: Capetele traseelor
SELECT nume,
ST_AsText(ST_StartPoint(linie)) AS plecare,
ST_AsText(ST_EndPoint(linie)) AS sosire
FROM trasee
ORDER BY id;
Rezultat
+------------------+------------+------------+
| nume | plecare | sosire |
+------------------+------------+------------+
| Autobuz 28 | POINT(0 0) | POINT(6 4) |
| Tramvai 3 | POINT(1 6) | POINT(5 2) |
| Pistă biciclete | POINT(0 0) | POINT(0 0) |
+------------------+------------+------------+
Exemplul 2: Distanța în linie dreaptă între capete
SET @drum = ST_GeomFromText('LINESTRING(47.1585 27.6014, 46.7712 23.6236, 45.7489 21.2087)', 4326);
SELECT ROUND(ST_Length(@drum) / 1000) AS km_pe_traseu,
ROUND(ST_Distance(ST_StartPoint(@drum), ST_EndPoint(@drum)) / 1000) AS km_in_linie_dreapta;
Rezultat
+--------------+---------------------+
| km_pe_traseu | km_in_linie_dreapta |
+--------------+---------------------+
| 524 | 515 |
+--------------+---------------------+
Greșeli frecvente
- Folosești funcțiile pe un poligon ca să obții un colț. Pentru poligon, ia mai întâi conturul cu
ST_ExteriorRing().
Comenzi înrudite
ST_PointN() și ST_NumPoints(): ST_PointN() returnează al n-lea punct al unei linii, iar ST_NumPoints() numărul de puncte.ST_IsClosed(): Verifică dacă o linie este închisă, adică primul și ultimul punct coincid.ST_ExteriorRing(): Returnează conturul exterior al unui poligon, ca LINESTRING închis.