Ce face ST_ConvexHull()
Înfășurătoarea convexă este forma pe care ar lua-o un elastic întins în jurul tuturor punctelor. Este utilă pentru a afla zona acoperită de un set de puncte, de exemplu zona în care sunt clienții unui magazin.
Pentru o colecție, MySQL ia toate vârfurile tuturor elementelor. Dacă punctele sunt coliniare, rezultatul este o linie. Pentru colecția goală rezultatul este NULL. Funcția nu acceptă SRID geografic.
Parametri
| Parametru | Descriere |
|---|---|
geometrie |
Valoarea spațială (SRID cartezian). |
Ce returnează
Un poligon, o linie sau un punct.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE magazine (
id INT PRIMARY KEY,
nume VARCHAR(20),
loc POINT NOT NULL
);
INSERT INTO magazine VALUES
(1, 'Librăria Ana', Point(1, 1)),
(2, 'Florăria Dan', Point(2, 6)),
(3, 'Brutăria Ioana', Point(5, 3)),
(4, 'Cafeneaua Mara', Point(4, 2)),
(5, 'Atelierul Radu', Point(12, 1));
Exemplul 1: Zona acoperită de magazine
SELECT ST_AsText(ST_ConvexHull(ST_Collect(loc))) AS zona,
ST_Area(ST_ConvexHull(ST_Collect(loc))) AS arie
FROM magazine
WHERE id <= 4;
Rezultat
+--------------------------------+------+
| zona | arie |
+--------------------------------+------+
| POLYGON((1 1,4 2,5 3,2 6,1 1)) | 10 |
+--------------------------------+------+
Exemplul 2: Puncte coliniare dau o linie
SELECT ST_AsText(ST_ConvexHull(ST_GeomFromText('MULTIPOINT(0 0,1 1,3 3)'))) AS rezultat;
Rezultat
+---------------------+
| rezultat |
+---------------------+
| LINESTRING(0 0,3 3) |
+---------------------+
Greșeli frecvente
- Folosești înfășurătoarea convexă ca graniță exactă a unei zone. Golurile și formele „în C” dispar; este doar o aproximare exterioară.
Comenzi înrudite
ST_Envelope(): Returnează dreptunghiul minim de încadrare (MBR) al unei geometrii, ca poligon.ST_Collect(): Funcție de agregare: strânge geometriile din mai multe rânduri într-o singură geometrie Multi sau colecție.ST_Buffer(): Returnează zona formată din toate punctele aflate la cel mult o distanță dată de o geometrie (o „zonă tampon”).