ST_Dimension() în MySQL

Returnează dimensiunea unei geometrii: 0 pentru puncte, 1 pentru linii, 2 pentru poligoane.

Sintaxă
ST_Dimension(geometrie)

Ce face ST_Dimension()

Dimensiunea spune dacă geometria are lungime sau arie: punctele au dimensiunea 0, liniile 1, poligoanele 2. Pentru o colecție, rezultatul este dimensiunea cea mai mare dintre elemente. Manualul menționează și valoarea -1 pentru colecția goală, dar serverul MySQL actual returnează NULL pentru ea.

Dimensiunea contează la unele relații: de exemplu ST_Overlaps() compară doar geometrii cu aceeași dimensiune.

Parametri

Parametru Descriere
geometrie Valoarea spațială.

Ce returnează

0, 1 sau 2 (NULL pentru colecția goală).

Exemple

Exemplul 1: Dimensiunea fiecărui tip

SELECT ST_Dimension(Point(1, 1)) AS punct,
       ST_Dimension(ST_GeomFromText('LINESTRING(0 0,3 4)')) AS linie,
       ST_Dimension(ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 0))')) AS poligon,
       ST_Dimension(GeomCollection(Point(1, 1), ST_GeomFromText('LINESTRING(0 0,1 1)'))) AS colectie,
       ST_Dimension(GeomCollection()) AS goala;

Rezultat

+-------+-------+---------+----------+-------+
| punct | linie | poligon | colectie | goala |
+-------+-------+---------+----------+-------+
|     0 |     1 |       2 |        1 |  NULL |
+-------+-------+---------+----------+-------+

Greșeli frecvente

  • Confunzi dimensiunea cu numărul de coordonate. Toate geometriile MySQL au două coordonate (x și y); dimensiunea arată dacă forma are lungime sau arie.

Comenzi înrudite

  • ST_GeometryType(): Returnează numele tipului unei geometrii: POINT, LINESTRING, POLYGON, MULTIPOINT etc.
  • ST_Overlaps(): Verifică dacă două geometrii de aceeași dimensiune se suprapun parțial (zona comună nu este niciuna dintre ele).