ST_Disjoint() în MySQL

Verifică dacă două geometrii nu au niciun punct comun (sunt complet separate).

Sintaxă
ST_Disjoint(g1, g2)

Ce face ST_Disjoint()

ST_Disjoint(g1, g2) este exact opusul lui ST_Intersects(g1, g2): returnează 1 când geometriile nu se ating deloc. Două poligoane care au doar o latură comună nu sunt disjuncte.

Parametri

Parametru Descriere
g1, g2 Geometriile comparate.

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 cartiere (
  id INT PRIMARY KEY,
  nume VARCHAR(20),
  forma POLYGON NOT NULL
);

INSERT INTO cartiere VALUES
  (1, 'Centru',   ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))')),
  (2, 'Copou',    ST_GeomFromText('POLYGON((0 4,4 4,4 8,0 8,0 4))')),
  (3, 'Tătărași', ST_GeomFromText('POLYGON((3 1,7 1,7 5,3 5,3 1))')),
  (4, 'Galata',   ST_GeomFromText('POLYGON((10 0,13 0,13 3,10 3,10 0))'));

Exemplul 1: Cartiere fără nicio legătură cu Centru

SELECT b.nume, ST_Disjoint(a.forma, b.forma) AS separat
FROM cartiere a JOIN cartiere b ON a.nume = 'Centru' AND b.id <> a.id
ORDER BY b.id;

Rezultat

+-------------+---------+
| nume        | separat |
+-------------+---------+
| Copou       |       0 |
| Tătărași    |       0 |
| Galata      |       1 |
+-------------+---------+

Greșeli frecvente

  • Scrii NOT ST_Intersects() și ST_Disjoint() în aceeași condiție, crezând că sunt diferite. Sunt echivalente; păstrează forma mai ușor de citit.

Comenzi înrudite

  • ST_Intersects(): Verifică dacă două geometrii au măcar un punct comun (inclusiv pe margine).
  • ST_Distance(): Returnează distanța minimă dintre două geometrii; pentru SRID 4326, în metri, calculată pe elipsoidul Pământului.