Todos os produtos
Search
Central de documentação

AnalyticDB:Funções de operação

Última atualização: Jun 27, 2026

As funções de operação calculam relações espaciais e transformações em valores GEOMETRY. Todas as funções que retornam GEOMETRY geram saída binária. Use ST_AsText() para obter o resultado legível no formato Well-Known Text (WKT).

Função

Descrição

ST_Intersection(g1, g2)

Retorna a interseção geométrica de g1 e g2

ST_Envelope(g)

Retorna o retângulo delimitador mínimo de uma geometria

ST_Union(g1, g2)

Retorna a união de conjuntos de pontos de duas geometrias

geometry_union(array[g1, g2, ...])

Retorna a união de conjuntos de pontos de um array de geometrias

ST_Boundary(g)

Retorna o limite de uma geometria como uma nova geometria

ST_EnvelopeAsPts(g)

Retorna os cantos inferior esquerdo e superior direito do retângulo delimitador

ST_Difference(g1, g2)

Retorna a parte de g1 que não intercepta g2

ST_ExteriorRing(g1)

Retorna o anel externo de um polígono como uma LINESTRING

ST_SymDifference(g1, g2)

Retorna as porções de g1 e g2 que não se interceptam mutuamente

ST_Intersection

ST_Intersection(g1, g2)

Retorna uma geometria que representa a interseção de g1 e g2.

Tipo de retorno: GEOMETRY

Exemplo:

Executar SELECT ST_Intersection(...) diretamente retorna um resultado binário. Use ST_AsText() para convertê-lo em texto legível:

SELECT ST_AsText(ST_Intersection(ST_GeometryFromText('MULTIPOINT (50 100, 50 200)'), ST_GeometryFromText('Point (50 100)')));

Resultado:

+-----------------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_Intersection(ST_GeometryFromText('MULTIPOINT (50 100, 50 200)'), ST_GeometryFromText('Point (50 100)'))) |
+-----------------------------------------------------------------------------------------------------------------------+
| POINT (50 100)                                                                                                        |

Funções relacionadas: ST_Union, ST_Difference, ST_SymDifference, ST_AsText

ST_Envelope

ST_Envelope(g)

Retorna uma representação binária do retângulo delimitador mínimo (envelope) que envolve a geometria de entrada.

Tipos de entrada compatíveis: LINE, POLYGON, MULTILINE, MULTIPOLYGON

Não há suporte para entrada POINT.

Tipo de retorno: GEOMETRY

Exemplo 1 — Envelope de uma LINESTRING:

SELECT ST_AsText(ST_Envelope(ST_GeometryFromText('LINESTRING (1 1, 2 2, 1 3)')));

Resultado:

+---------------------------------------------------------------------------------+
| ST_AsText(ST_Envelope(ST_GeometryFromText('LINESTRING (1 1, 2 2, 1 3)')))      |
+---------------------------------------------------------------------------------+
| POLYGON ((1 1, 2 1, 2 3, 1 3, 1 1))                                            |

Exemplo 2 — Envelope de um MULTIPOINT:

SELECT ST_AsText(ST_Envelope(ST_GeometryFromText('MULTIPOINT (1 2, 2 4, 3 6, 4 8)')));

Resultado:

+-------------------------------------------------------------------------------+
| ST_AsText(ST_Envelope(ST_GeometryFromText('MULTIPOINT (1 2, 2 4, 3 6, 4 8)'))) |
+-------------------------------------------------------------------------------+
| POLYGON ((1 2, 4 2, 4 8, 1 8, 1 2))                                           |

Funções relacionadas: ST_EnvelopeAsPts, ST_Boundary

ST_Union

ST_Union(g1, g2)

Retorna uma geometria que representa a união de conjuntos de pontos de g1 e g2.

Tipo de retorno: INT

Para calcular a união de um array de geometrias, use geometry_union .

Exemplo:

SELECT ST_ASText(ST_Union(ST_GeometryFromText('MULTIPOLYGON (((1 1, 3 1, 3 3, 1 3, 1 1)))'), ST_GeometryFromText('MULTIPOLYGON (((2 2, 4 2, 4 4, 2 4, 2 2)))')));

Resultado:

+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ST_ASText(ST_Union(ST_GeometryFromText('MULTIPOLYGON (((1 1, 3 1, 3 3, 1 3, 1 1)))'), ST_GeometryFromText('MULTIPOLYGON (((2 2, 4 2, 4 4, 2 4, 2 2)))')))    |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POLYGON ((1 1, 3 1, 3 2, 4 2, 4 4, 2 4, 2 3, 1 3, 1 1))                                                                                                      |

Funções relacionadas: geometry_union, ST_Intersection, ST_Difference, ST_SymDifference

geometry_union

geometry_union(array[g1, g2, ...])

Retorna uma geometria que representa a união de conjuntos de pontos de um array de geometrias.

Tipo de retorno: GEOMETRY

Para calcular a união de exatamente duas geometrias, use ST_Union .

Exemplo:

SELECT ST_AsText(geometry_union(ARRAY[ST_Point(61.56, -158.54), ST_Point(61.56, -158.55)]));

Resultado:

+------------------------------------------------------------------------------------------------+
| ST_AsText(geometry_union(ARRAY[ST_Point(61.56, -158.54), ST_Point(61.56, -158.55)]))          |
+------------------------------------------------------------------------------------------------+
| MULTIPOINT ((61.56 -158.55), (61.56 -158.54))                                                 |

Funções relacionadas: ST_Union

ST_Boundary

ST_Boundary(g)

Retorna o limite da geometria de entrada como uma nova geometria.

Tipo de retorno: GEOMETRY

Exemplo:

SELECT ST_AsText(ST_Boundary(ST_GeometryFromText('LINESTRING (8 4, 5 7)')));

Resultado:

+----------------------------------------------------------------------------+
| ST_AsText(ST_Boundary(ST_GeometryFromText('LINESTRING (8 4, 5 7)')))      |
+----------------------------------------------------------------------------+
| MULTIPOINT ((8 4), (5 7))                                                  |

Funções relacionadas: ST_Envelope, ST_ExteriorRing

ST_EnvelopeAsPts

ST_EnvelopeAsPts(g)

Retorna um array com dois valores POINT que representam os cantos inferior esquerdo e superior direito do retângulo delimitador. Retorna null se a geometria de entrada estiver vazia.

Tipo de retorno: Array[Geometry]

Exemplo — geometria vazia retorna null:

SELECT ST_EnvelopeAsPts(ST_GeometryFromText('LINESTRING EMPTY'));

Resultado:

+-----------------------------------------------------------------+
| ST_EnvelopeAsPts(ST_GeometryFromText('LINESTRING EMPTY'))      |
+-----------------------------------------------------------------+
| null                                                            |

Funções relacionadas: ST_Envelope

ST_Difference

ST_Difference(g1, g2)

Retorna a parte de g1 que não intercepta g2.

Tipo de retorno: GEOMETRY

A ordem dos parâmetros importa. ST_Difference(A, B) sempre retorna uma porção de A, não de B. Esta é a única função de operação em que trocar os argumentos produz um resultado diferente.

Exemplo:

SELECT ST_AsText(ST_Difference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')));

Resultado:

+---------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_Difference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')))      |
+---------------------------------------------------------------------------------------------------------------+
| POINT (50 100)                                                                                                |

O resultado é o POINT (50 100) completo porque os dois pontos são disjuntos e nada foi subtraído.

Funções relacionadas: ST_Intersection, ST_SymDifference, ST_Union

ST_ExteriorRing

ST_ExteriorRing(g1)

Retorna o anel externo de um polígono como uma LINESTRING.

Tipo de retorno: GEOMETRY

Exemplo:

SELECT ST_AsText(ST_ExteriorRing(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 1))')));

Resultado:

+------------------------------------------------------------------------------------+
| ST_AsText(ST_ExteriorRing(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 1))')))     |
+------------------------------------------------------------------------------------+
| LINESTRING (1 1, 4 1, 1 4, 1 1)                                                   |

Funções relacionadas: ST_Boundary

ST_SymDifference

ST_SymDifference(g1, g2)

Retorna as porções de g1 e g2 que não se interceptam mutuamente.

Tipo de retorno: GEOMETRY

Exemplo:

SELECT ST_AsText(ST_SymDifference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (50 150)')));

Resultado:

+--------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_SymDifference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (50 150)')))   |
+--------------------------------------------------------------------------------------------------------------+
| MULTIPOINT ((50 100), (50 150))                                                                              |

Como os dois pontos são disjuntos, a diferença simétrica corresponde à combinação de ambos.

Funções relacionadas: ST_Difference, ST_Union, ST_Intersection

Observações de uso

  • Saída binária: Todas as funções que retornam GEOMETRY produzem saída binária quando usadas em um SELECT simples. Sempre envolva a chamada da função com ST_AsText() para obter uma saída WKT legível.

  • Assimetria do ST_Difference: ST_Difference(A, B) sempre retorna um subconjunto de A. Trocar os argumentos gera um resultado diferente.

  • Incompatibilidade do ST_Envelope com POINT: Não há suporte para passar uma geometria POINT para ST_Envelope.

  • MULTILINE: O AnalyticDB for MySQL usa MULTILINE como tipo de linha multissegmentada. O tipo equivalente no padrão OGC é MULTILINESTRING.