Ce face MBRIntersects() și MBRDisjoint()
MBRIntersects() returnează 1 dacă dreptunghiurile au măcar un punct comun (inclusiv pe margine), iar MBRDisjoint() este opusul ei. Pentru că lucrează cu dreptunghiuri, două forme care nu se ating pot avea totuși dreptunghiurile intersectate.
Parametri
| Parametru | Descriere |
|---|---|
g1, g2 |
Geometriile ale căror dreptunghiuri se compară. |
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: Dreptunghiuri comparate cu formele exacte
SET @zona = ST_GeomFromText('POLYGON((1.5 2.5,2.5 2.5,2.5 3.5,1.5 3.5,1.5 2.5))');
SELECT nume,
MBRIntersects(linie, @zona) AS mbr_intersecteaza,
ST_Intersects(linie, @zona) AS forma_intersecteaza,
MBRDisjoint(linie, @zona) AS mbr_separate
FROM trasee
ORDER BY id;
Rezultat
+------------------+-------------------+---------------------+--------------+
| nume | mbr_intersecteaza | forma_intersecteaza | mbr_separate |
+------------------+-------------------+---------------------+--------------+
| Autobuz 28 | 1 | 0 | 0 |
| Tramvai 3 | 1 | 0 | 0 |
| Pistă biciclete | 1 | 1 | 0 |
+------------------+-------------------+---------------------+--------------+
Greșeli frecvente
- Tratezi rezultatul MBR ca pe unul exact. Este doar un filtru rapid; confirmă cu
ST_Intersects().
Comenzi înrudite
ST_Intersects(): Verifică dacă două geometrii au măcar un punct comun (inclusiv pe margine).ST_Disjoint(): Verifică dacă două geometrii nu au niciun punct comun (sunt complet separate).MBRContains() și MBRWithin(): Verifică dacă dreptunghiul de încadrare al unei geometrii îl conține pe al celeilalte; un test rapid, aproximativ.