ST_ExteriorRing() în MySQL

Returnează conturul exterior al unui poligon, ca LINESTRING închis.

Sintaxă
ST_ExteriorRing(poligon)

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ște ST_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).