Polygon() în MySQL

Construiește un poligon din unul sau mai multe inele (LineString-uri închise).

Sintaxă
Polygon(inel_exterior [, inel_interior, ...])

Ce face Polygon()

Un poligon este o suprafață: un cartier, o parcelă, o zonă de livrare. Polygon() primește conturul exterior ca LineString închis (primul punct este egal cu ultimul). Inelele următoare, opționale, sunt „găuri” în interiorul poligonului.

Dacă un inel nu este închis, serverul MySQL actual dă eroarea „Invalid GIS data provided to function polygon”.

Parametri

Parametru Descriere
inel_exterior Conturul, ca LineString închis.
inel_interior Opțional: găuri în poligon, tot ca LineString închise.

Ce returnează

O valoare POLYGON.

Exemple

Exemplul 1: Un pătrat de 4 x 4 km și aria lui

SET @centru = Polygon(LineString(Point(0, 0), Point(4, 0), Point(4, 4), Point(0, 4), Point(0, 0)));

SELECT ST_AsText(@centru) AS poligon, ST_Area(@centru) AS arie_km2;

Rezultat

+--------------------------------+----------+
| poligon                        | arie_km2 |
+--------------------------------+----------+
| POLYGON((0 0,4 0,4 4,0 4,0 0)) |       16 |
+--------------------------------+----------+

Exemplul 2: Poligon cu o gaură (un parc cu un lac)

SET @parc = Polygon(
  LineString(Point(0, 0), Point(10, 0), Point(10, 10), Point(0, 10), Point(0, 0)),
  LineString(Point(4, 4), Point(6, 4), Point(6, 6), Point(4, 6), Point(4, 4))
);

SELECT ST_AsText(@parc) AS parc,
       ST_Area(@parc) AS arie_fara_lac,
       ST_NumInteriorRings(@parc) AS goluri;

Rezultat

+----------------------------------------------------------+---------------+--------+
| parc                                                     | arie_fara_lac | goluri |
+----------------------------------------------------------+---------------+--------+
| POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4)) |            96 |      1 |
+----------------------------------------------------------+---------------+--------+

Greșeli frecvente

  • Uiți să repeți primul punct la final. Inelul nu este închis și primești eroare; ultimul punct trebuie să fie identic cu primul.

Comenzi înrudite

  • LineString(): Construiește o linie frântă (LINESTRING) din două sau mai multe puncte.
  • ST_Area(): Returnează aria unui poligon sau a unui MULTIPOLYGON; pentru SRID 4326, în metri pătrați.
  • ST_ExteriorRing(): Returnează conturul exterior al unui poligon, ca LINESTRING închis.