Ce face ST_IsClosed()
O linie este închisă dacă se întoarce în punctul de plecare, ca un traseu circular. Pentru un MULTILINESTRING, rezultatul este 1 doar dacă toate liniile sunt închise.
O linie închisă și simplă (fără autointersecții) poate deveni conturul unui poligon. Funcția nu acceptă geometrii cu SRID geografic.
Parametri
| Parametru | Descriere |
|---|---|
linie |
Un LINESTRING sau MULTILINESTRING. |
Ce returnează
1, 0 sau NULL.
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: Care trasee sunt circulare
SELECT nume, ST_IsClosed(linie) AS circular
FROM trasee
ORDER BY id;
SELECT ST_IsClosed(ST_GeomFromText('MULTILINESTRING((0 0,1 1,0 0),(5 5,6 6))')) AS multi;
Rezultat
+------------------+----------+
| nume | circular |
+------------------+----------+
| Autobuz 28 | 0 |
| Tramvai 3 | 0 |
| Pistă biciclete | 1 |
+------------------+----------+
+-------+
| multi |
+-------+
| 0 |
+-------+
Greșeli frecvente
- Crezi că o linie închisă este automat poligon. Linia nu are arie; transform-o cu
Polygon()sauST_PolyFromText().
Comenzi înrudite
ST_IsSimple(): Verifică dacă o geometrie este „simplă”: de exemplu o linie care nu se intersectează cu ea însăși.ST_StartPoint() și ST_EndPoint(): Returnează primul, respectiv ultimul punct al unei linii (LINESTRING).Polygon(): Construiește un poligon din unul sau mai multe inele (LineString-uri închise).