ST_Buffer_Strategy() în MySQL

Operații spațiale MySQL 5.7+

Creează o „strategie” pentru ST_Buffer(): forma colțurilor, a capetelor de linie sau a zonei din jurul punctelor.

Sintaxă
ST_Buffer_Strategy(strategie [, puncte_pe_cerc])

Ce face ST_Buffer_Strategy()

Rezultatul este un șir binar, care are sens doar ca argument pentru ST_Buffer(). Strategiile pentru puncte sunt 'point_circle' (cerc, implicit) și 'point_square' (pătrat). Pentru colțurile liniilor și poligoanelor: 'join_round' (rotunjite, implicit) și 'join_miter' (ascuțite). Pentru capetele liniilor: 'end_round' (rotunde, implicit) și 'end_flat' (drepte).

'point_circle', 'join_round', 'join_miter' și 'end_round' cer al doilea argument, numărul de puncte pe cerc (implicit 32 în ST_Buffer()). 'point_square' și 'end_flat' nu acceptă al doilea argument. La ST_Buffer() se poate da cel mult o strategie de fiecare tip.

Parametri

Parametru Descriere
strategie Unul dintre textele 'point_circle', 'point_square', 'join_round', 'join_miter', 'end_round', 'end_flat'.
puncte_pe_cerc Numărul de puncte folosite pentru un cerc complet (pentru strategiile rotunde și join_miter).

Ce returnează

Un șir binar, folosit ca argument în ST_Buffer().

Exemple

Exemplul 1: Cerc mai grosier, cu 8 puncte

SET @cerc8 = ST_Buffer(Point(0, 0), 1, ST_Buffer_Strategy('point_circle', 8));

SELECT ST_NumPoints(ST_ExteriorRing(@cerc8)) AS puncte_contur,
       ROUND(ST_Area(@cerc8), 4) AS arie;

Rezultat

+---------------+--------+
| puncte_contur | arie   |
+---------------+--------+
|             9 | 2.8284 |
+---------------+--------+

Exemplul 2: Culoar de 1 km de-a lungul unui drum, cu capete drepte

SET @drum = ST_GeomFromText('LINESTRING(0 0,0 5,5 5)');

SELECT ST_AsText(ST_Buffer(@drum, 1,
         ST_Buffer_Strategy('end_flat'),
         ST_Buffer_Strategy('join_miter', 4))) AS culoar;

Rezultat

+---------------------------------------------------+
| culoar                                            |
+---------------------------------------------------+
| POLYGON((1 4,5 4,5 6,0 6,-1 6,-1 5,-1 0,1 0,1 4)) |
+---------------------------------------------------+

Greșeli frecvente

  • Dai două strategii de același tip (de exemplu end_flat și end_round) sau o strategie pentru puncte la o linie. Primești eroare de argumente greșite.

Comenzi înrudite

  • ST_Buffer(): Returnează zona formată din toate punctele aflate la cel mult o distanță dată de o geometrie (o „zonă tampon”).