ST_IsClosed() în MySQL

Verifică dacă o linie este închisă, adică primul și ultimul punct coincid.

Sintaxă
ST_IsClosed(linie)

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() sau ST_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).