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 |
|
|
Retorna a interseção geométrica de g1 e g2 |
|
|
Retorna o retângulo delimitador mínimo de uma geometria |
|
|
Retorna a união de conjuntos de pontos de duas geometrias |
|
|
Retorna a união de conjuntos de pontos de um array de geometrias |
|
|
Retorna o limite de uma geometria como uma nova geometria |
|
|
Retorna os cantos inferior esquerdo e superior direito do retângulo delimitador |
|
|
Retorna a parte de g1 que não intercepta g2 |
|
|
Retorna o anel externo de um polígono como uma LINESTRING |
|
|
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
SELECTsimples. Sempre envolva a chamada da função comST_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
MULTILINEcomo tipo de linha multissegmentada. O tipo equivalente no padrão OGC éMULTILINESTRING.