Ce face ST_ExteriorRing()
Un poligon are un inel exterior (conturul) și, opțional, inele interioare (găuri). ST_ExteriorRing() returnează conturul sub formă de linie, cu care poți lucra apoi ca orice LINESTRING: lungime (perimetrul), număr de puncte, capete.
Parametri
| Parametru | Descriere |
|---|---|
poligon |
Un POLYGON. |
Ce returnează
Un LINESTRING.
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: Conturul și perimetrul cartierelor
SELECT nume,
ST_AsText(ST_ExteriorRing(forma)) AS contur,
ST_Length(ST_ExteriorRing(forma)) AS perimetru_km
FROM cartiere
WHERE id <= 2;
Rezultat
+--------+---------------------------------+--------------+
| nume | contur | perimetru_km |
+--------+---------------------------------+--------------+
| Centru | LINESTRING(0 0,4 0,4 4,0 4,0 0) | 16 |
| Copou | LINESTRING(0 4,4 4,4 8,0 8,0 4) | 16 |
+--------+---------------------------------+--------------+
Greșeli frecvente
- Cauți o funcție de perimetru. MySQL nu are
ST_Perimeter(); foloseșteST_Length(ST_ExteriorRing(poligon)).
Comenzi înrudite
ST_InteriorRingN() și ST_NumInteriorRings(): Returnează al n-lea inel interior (gaură) al unui poligon, respectiv numărul de inele interioare.ST_Length(): Returnează lungimea unei linii (sau suma lungimilor dintr-un MULTILINESTRING); pe SRID 4326, în metri.Polygon(): Construiește un poligon din unul sau mai multe inele (LineString-uri închise).