Ce face ST_MakeEnvelope()
ST_MakeEnvelope() este modul rapid de a crea zona de căutare pentru o hartă: colțul stânga-jos și colțul dreapta-sus ale ecranului. Dacă punctele sunt egale, rezultatul este punctul; dacă sunt pe aceeași orizontală sau verticală, rezultatul este segmentul dintre ele.
Calculul se face în plan, iar rezultatul are SRID 0. Punctele cu SRID geografic produc eroare.
Parametri
| Parametru | Descriere |
|---|---|
punct1, punct2 |
Două colțuri opuse, ca POINT. |
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 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: Dreptunghiul și cazurile degenerate
SELECT ST_AsText(ST_MakeEnvelope(Point(0, 0), Point(5, 4))) AS dreptunghi,
ST_AsText(ST_MakeEnvelope(Point(1, 1), Point(1, 1))) AS punct,
ST_AsText(ST_MakeEnvelope(Point(0, 2), Point(5, 2))) AS segment;
Rezultat
+--------------------------------+------------+---------------------+
| dreptunghi | punct | segment |
+--------------------------------+------------+---------------------+
| POLYGON((0 0,5 0,5 4,0 4,0 0)) | POINT(1 1) | LINESTRING(0 2,5 2) |
+--------------------------------+------------+---------------------+
Exemplul 2: Magazinele vizibile pe porțiunea de hartă afișată
SELECT nume
FROM magazine
WHERE MBRContains(ST_MakeEnvelope(Point(0, 0), Point(5, 4)), loc)
ORDER BY id;
Rezultat
+----------------+
| nume |
+----------------+
| Librăria Ana |
| Cafeneaua Mara |
+----------------+
Greșeli frecvente
- Folosești
ST_MakeEnvelope()cu puncte GPS cu SRID 4326. Primești eroare; pentru zone geografice construiește poligonul cuST_GeomFromText(..., 4326).
Comenzi înrudite
ST_Envelope(): Returnează dreptunghiul minim de încadrare (MBR) al unei geometrii, ca poligon.MBRContains() și MBRWithin(): Verifică dacă dreptunghiul de încadrare al unei geometrii îl conține pe al celeilalte; un test rapid, aproximativ.ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.