ST_GeometryType() în MySQL

Returnează numele tipului unei geometrii: POINT, LINESTRING, POLYGON, MULTIPOINT etc.

Sintaxă
ST_GeometryType(geometrie)

Ce face ST_GeometryType()

ST_GeometryType() spune ce fel de geometrie conține o valoare. Este utilă când o coloană de tip GEOMETRY poate conține tipuri diferite, sau ca să verifici datele importate.

Numele sunt scrise cu majuscule. Pentru o colecție, MySQL returnează GEOMCOLLECTION.

Parametri

Parametru Descriere
geometrie Valoarea spațială.

Ce returnează

Un text cu numele tipului.

Exemple

Exemplul 1: Tipuri amestecate într-o coloană GEOMETRY

CREATE TABLE obiecte (nume VARCHAR(20), forma GEOMETRY);
INSERT INTO obiecte VALUES
  ('Statie', Point(1, 1)),
  ('Traseu', ST_GeomFromText('LINESTRING(0 0,3 4)')),
  ('Parc', ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 0))')),
  ('Sedii', ST_GeomFromText('MULTIPOINT(1 1,2 2)')),
  ('Pachet', GeomCollection(Point(1, 1)));

SELECT nume, ST_GeometryType(forma) AS tip FROM obiecte;

Rezultat

+--------+----------------+
| nume   | tip            |
+--------+----------------+
| Statie | POINT          |
| Traseu | LINESTRING     |
| Parc   | POLYGON        |
| Sedii  | MULTIPOINT     |
| Pachet | GEOMCOLLECTION |
+--------+----------------+

Exemplul 2: Numărare pe tipuri

CREATE TABLE obiecte (forma GEOMETRY);
INSERT INTO obiecte VALUES (Point(1, 1)), (Point(2, 2)), (ST_GeomFromText('LINESTRING(0 0,3 4)'));

SELECT ST_GeometryType(forma) AS tip, COUNT(*) AS cate
FROM obiecte
GROUP BY tip;

Rezultat

+------------+------+
| tip        | cate |
+------------+------+
| POINT      |    2 |
| LINESTRING |    1 |
+------------+------+

Greșeli frecvente

  • Compari cu 'GeometryCollection'. MySQL returnează 'GEOMCOLLECTION'; verifică rezultatul real înainte să scrii condiția.

Comenzi înrudite

  • ST_Dimension(): Returnează dimensiunea unei geometrii: 0 pentru puncte, 1 pentru linii, 2 pentru poligoane.
  • ST_IsEmpty(): Returnează 1 dacă geometria este goală (colecția goală) și 0 în rest.
  • ST_AsText(): Transformă o geometrie în text WKT, ușor de citit: POINT(1 2), LINESTRING(…), POLYGON(…).