ST_InteriorRingN() și ST_NumInteriorRings() în MySQL

Returnează al n-lea inel interior (gaură) al unui poligon, respectiv numărul de inele interioare.

Sintaxă
ST_InteriorRingN(poligon, n)
ST_NumInteriorRings(poligon)
ST_NumInteriorRing(poligon)

Ce face ST_InteriorRingN() și ST_NumInteriorRings()

Inelele interioare sunt golurile dintr-un poligon: un lac într-un parc, o curte interioară într-o clădire. ST_NumInteriorRings() le numără, iar ST_InteriorRingN() returnează unul anume, ca LINESTRING. Numerotarea începe de la 1.

ST_NumInteriorRing() (fără „s”) este sinonim pentru ST_NumInteriorRings().

Parametri

Parametru Descriere
poligon Un POLYGON.
n Numărul inelului interior, de la 1.

Ce returnează

ST_InteriorRingN(): un LINESTRING; ST_NumInteriorRings(): un număr întreg.

Exemple

Exemplul 1: Un parc cu două lacuri

SET @parc = ST_GeomFromText(
  'POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,3 1,3 3,1 3,1 1),(6 6,8 6,8 8,6 8,6 6))');

SELECT ST_NumInteriorRings(@parc) AS lacuri,
       ST_NumInteriorRing(@parc) AS lacuri_sinonim,
       ST_AsText(ST_InteriorRingN(@parc, 2)) AS al_doilea_lac,
       ST_Area(@parc) AS arie_fara_lacuri;

Rezultat

+--------+----------------+---------------------------------+------------------+
| lacuri | lacuri_sinonim | al_doilea_lac                   | arie_fara_lacuri |
+--------+----------------+---------------------------------+------------------+
|      2 |              2 | LINESTRING(6 6,8 6,8 8,6 8,6 6) |               92 |
+--------+----------------+---------------------------------+------------------+

Greșeli frecvente

  • Crezi că inelele interioare sunt incluse în arie. ST_Area() le scade; pentru aria totală folosește ST_Area(Polygon(ST_ExteriorRing(p))).

Comenzi înrudite

  • ST_ExteriorRing(): Returnează conturul exterior al unui poligon, ca LINESTRING închis.
  • Polygon(): Construiește un poligon din unul sau mai multe inele (LineString-uri închise).
  • ST_Area(): Returnează aria unui poligon sau a unui MULTIPOLYGON; pentru SRID 4326, în metri pătrați.