ST_Equals() în MySQL

Verifică dacă două geometrii reprezintă exact aceeași formă, chiar dacă sunt scrise diferit.

Sintaxă
ST_Equals(g1, g2)

Ce face ST_Equals()

ST_Equals() compară mulțimile de puncte, nu textul. Un poligon descris pornind din alt colț sau o linie cu un punct intermediar în plus pe același segment sunt egale geometric.

Spre deosebire de celelalte relații, nu returnează NULL pentru geometrii goale.

Parametri

Parametru Descriere
g1, g2 Geometriile comparate.

Ce returnează

1 sau 0 (NULL dacă un argument este NULL).

Exemple

Exemplul 1: Aceeași formă, scrisă diferit

SET @a = ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))');
SET @b = ST_GeomFromText('POLYGON((4 4,0 4,0 0,4 0,4 4))');

SELECT ST_Equals(@a, @b) AS egale_geometric,
       ST_AsText(@a) = ST_AsText(@b) AS texte_egale,
       ST_Equals(ST_GeomFromText('LINESTRING(0 0,2 0)'), ST_GeomFromText('LINESTRING(0 0,1 0,2 0)')) AS linii;

Rezultat

+-----------------+-------------+-------+
| egale_geometric | texte_egale | linii |
+-----------------+-------------+-------+
|               1 |           0 |     1 |
+-----------------+-------------+-------+

Greșeli frecvente

  • Compari coloane spațiale cu =. Operatorul compară octeții, nu forma; folosește ST_Equals().

Comenzi înrudite

  • MBREquals(): Verifică dacă două geometrii au exact același dreptunghi de încadrare (chiar dacă formele diferă).
  • ST_AsText(): Transformă o geometrie în text WKT, ușor de citit: POINT(1 2), LINESTRING(…), POLYGON(…).
  • ST_SymDifference(): Returnează punctele care sunt într-una dintre geometrii, dar nu în amândouă (diferența simetrică).