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()sauST_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).