Ce face ST_Centroid()
Centroidul este „centrul de masă” al formei. Pentru o colecție, MySQL ia doar elementele cu dimensiunea cea mai mare (de exemplu doar poligoanele) și calculează centroidul lor.
Centroidul nu se află neapărat în interiorul formei (de exemplu la o formă de „C” sau la un MULTIPOLYGON). Funcția nu acceptă geometrii cu SRID geografic.
Parametri
| Parametru | Descriere |
|---|---|
geometrie |
Un poligon, MULTIPOLYGON sau o colecție (SRID cartezian). |
Ce returnează
Un POINT; NULL pentru colecția goală.
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: Centrul fiecărui cartier
SELECT nume, ST_AsText(ST_Centroid(forma)) AS centru
FROM cartiere
ORDER BY id;
Rezultat
+-------------+-----------------+
| nume | centru |
+-------------+-----------------+
| Centru | POINT(2 2) |
| Copou | POINT(2 6) |
| Tătărași | POINT(5 3) |
| Galata | POINT(11.5 1.5) |
+-------------+-----------------+
Exemplul 2: Centroid în afara formei
SET @c = ST_GeomFromText('POLYGON((0 0,6 0,6 1,1 1,1 5,6 5,6 6,0 6,0 0))');
SELECT ST_AsText(ST_Centroid(@c)) AS centroid,
ST_Contains(@c, ST_Centroid(@c)) AS e_in_interior;
Rezultat
+----------------+---------------+
| centroid | e_in_interior |
+----------------+---------------+
| POINT(2.375 3) | 0 |
+----------------+---------------+
Greșeli frecvente
- Folosești centroidul ca punct de afișare a unei etichete pe hartă. Poate cădea în afara formei; verifică cu
ST_Contains().
Comenzi înrudite
ST_Area(): Returnează aria unui poligon sau a unui MULTIPOLYGON; pentru SRID 4326, în metri pătrați.ST_Envelope(): Returnează dreptunghiul minim de încadrare (MBR) al unei geometrii, ca poligon.ST_Contains(): Verifică dacă prima geometrie o conține complet pe a doua (de exemplu un punct în interiorul unui poligon).