ST_IsSimple() în MySQL

Verifică dacă o geometrie este „simplă”: de exemplu o linie care nu se intersectează cu ea însăși.

Sintaxă
ST_IsSimple(geometrie)

Ce face ST_IsSimple()

O geometrie este simplă dacă nu are puncte anormale: o linie nu trece de două ori prin același punct (cu excepția capetelor unei linii închise), iar un MULTIPOINT nu are puncte repetate. Poligoanele valide sunt mereu simple.

Funcția este utilă la validarea traseelor desenate de utilizatori: un traseu care se taie singur este de obicei o greșeală de desen.

Parametri

Parametru Descriere
geometrie Valoarea spațială.

Ce returnează

1 dacă geometria este simplă, 0 dacă nu.

Exemple

Exemplul 1: Linii simple și o linie care se taie singură

SELECT ST_IsSimple(ST_GeomFromText('LINESTRING(0 0,3 0,3 4)')) AS traseu_normal,
       ST_IsSimple(ST_GeomFromText('LINESTRING(0 0,4 4,4 0,0 4)')) AS se_taie,
       ST_IsSimple(ST_GeomFromText('LINESTRING(0 0,4 0,4 4,0 0)')) AS inchis,
       ST_IsSimple(ST_GeomFromText('MULTIPOINT(1 1,1 1)')) AS punct_repetat;

Rezultat

+---------------+---------+--------+---------------+
| traseu_normal | se_taie | inchis | punct_repetat |
+---------------+---------+--------+---------------+
|             1 |       0 |      1 |             0 |
+---------------+---------+--------+---------------+

Greșeli frecvente

  • Confunzi „simplu” cu „valid”. O geometrie poate fi simplă și totuși invalidă (de exemplu un poligon cu laturi suprapuse); pentru validitate folosește ST_IsValid().

Comenzi înrudite

  • ST_IsValid(): Verifică dacă o geometrie este validă după regulile OGC (de exemplu un poligon care nu se autointersectează).
  • ST_IsClosed(): Verifică dacă o linie este închisă, adică primul și ultimul punct coincid.
  • ST_Crosses(): Verifică dacă o geometrie o traversează pe alta: o linie care trece printr-un poligon sau două linii care se încrucișează.