Ce face ST_Envelope()
MBR („Minimum Bounding Rectangle”) este cel mai mic dreptunghi cu laturile paralele cu axele care conține toată geometria. Rezultatul este poligonul POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY)).
Pentru un punct, rezultatul este punctul, iar pentru un segment orizontal sau vertical este segmentul (un dreptunghi cu lățimea zero ar fi un poligon invalid). Funcția nu acceptă geometrii cu SRID geografic (de exemplu 4326).
Parametri
| Parametru | Descriere |
|---|---|
geometrie |
Valoarea spațială (SRID cartezian). |
Ce returnează
Un POLYGON (sau un POINT / LINESTRING în cazurile degenerate).
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: Dreptunghiul care încadrează un traseu
SELECT nume, ST_AsText(ST_Envelope(linie)) AS mbr
FROM trasee
ORDER BY id;
Rezultat
+------------------+--------------------------------+
| nume | mbr |
+------------------+--------------------------------+
| Autobuz 28 | POLYGON((0 0,6 0,6 4,0 4,0 0)) |
| Tramvai 3 | POLYGON((1 2,5 2,5 6,1 6,1 2)) |
| Pistă biciclete | POLYGON((0 0,2 0,2 4,0 4,0 0)) |
+------------------+--------------------------------+
Exemplul 2: Cazurile degenerate: punct și segment vertical
SELECT ST_AsText(ST_Envelope(Point(2, 3))) AS punct,
ST_AsText(ST_Envelope(ST_GeomFromText('LINESTRING(1 1,1 5)'))) AS segment;
Rezultat
+------------+---------------------+
| punct | segment |
+------------+---------------------+
| POINT(2 3) | LINESTRING(1 1,1 5) |
+------------+---------------------+
Greșeli frecvente
- Folosești
ST_Envelope()pe coloane cu SRID 4326. Primești eroarea că funcția nu este implementată pentru sisteme geografice.
Comenzi înrudite
ST_MakeEnvelope(): Construiește dreptunghiul care are cele două puncte drept colțuri opuse.MBRContains() și MBRWithin(): Verifică dacă dreptunghiul de încadrare al unei geometrii îl conține pe al celeilalte; un test rapid, aproximativ.ST_ConvexHull(): Returnează înfășurătoarea convexă: cel mai mic poligon convex care cuprinde toată geometria.