ST_Overlaps() în MySQL

Verifică dacă două geometrii de aceeași dimensiune se suprapun parțial (zona comună nu este niciuna dintre ele).

Sintaxă
ST_Overlaps(g1, g2)

Ce face ST_Overlaps()

Două geometrii se suprapun dacă au o parte comună de aceeași dimensiune (o arie comună pentru poligoane, un segment comun pentru linii), dar niciuna nu o conține complet pe cealaltă.

Dacă geometriile au dimensiuni diferite (de exemplu o linie și un poligon), rezultatul este NULL.

Parametri

Parametru Descriere
g1, g2 Geometriile comparate, cu aceeași dimensiune.

Ce returnează

1, 0 sau NULL.

Exemple

Exemplul 1: Suprapunere parțială, completă și vecinătate

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

SELECT ST_Overlaps(@centru, ST_GeomFromText('POLYGON((3 1,7 1,7 5,3 5,3 1))')) AS partial,
       ST_Overlaps(@centru, ST_GeomFromText('POLYGON((1 1,2 1,2 2,1 2,1 1))')) AS inclus,
       ST_Overlaps(@centru, ST_GeomFromText('POLYGON((0 4,4 4,4 8,0 8,0 4))')) AS vecin,
       ST_Overlaps(@centru, ST_GeomFromText('LINESTRING(0 0,9 9)')) AS cu_linie;

Rezultat

+---------+--------+-------+----------+
| partial | inclus | vecin | cu_linie |
+---------+--------+-------+----------+
|       1 |      0 |     0 |     NULL |
+---------+--------+-------+----------+

Greșeli frecvente

  • Te aștepți la 1 când un poligon îl conține pe celălalt. Incluziunea completă nu este suprapunere; folosește ST_Contains() sau ST_Intersects().

Comenzi înrudite

  • ST_Touches(): Verifică dacă două geometrii se ating doar pe margine, fără ca interioarele lor să se suprapună.
  • ST_Intersects(): Verifică dacă două geometrii au măcar un punct comun (inclusiv pe margine).
  • ST_Intersection(): Returnează partea comună a două geometrii (intersecția lor).