Todos os produtos
Search
Central de documentação

MaxCompute:ST_MAKEPOLYGON

Última atualização: Aug 26, 2026

A função ST_MAKEPOLYGON constrói um objeto geográfico do tipo polígono a partir de um contorno externo especificado e zero ou mais buracos.

Sintaxe

GEOGRAPHY ST_MAKEPOLYGON(GEOGRAPHY <shell>[, ARRAY<GEOGRAPHY> <holes>])

Parâmetros

  • shell: Obrigatório. Um objeto geográfico do tipo linestring.

  • holes: Opcional. Um ARRAY de objetos geográficos do tipo linestring.

Use a função ST_MAKELINE para construir objetos geográficos do tipo linestring. Observe as seguintes regras:

  • Uma linestring deve conter pelo menos três vértices distintos.

  • A linestring deve ser fechada, ou seja, o primeiro e o último vértice devem ser idênticos. Caso contrário, a função fecha automaticamente a linestring ao adicionar um segmento do último vértice ao primeiro.

Valor retornado

Retorna um objeto geográfico do tipo polygon. Aplicam-se as seguintes regras:

  • Se algum argumento de entrada for NULL ou se o array de buracos contiver um elemento NULL, a função retornará NULL.

  • Se algum objeto geográfico de entrada estiver vazio, a função retornará um erro.

  • Limitações de precisão da S2 Geometry Library podem causar pequenas diferenças entre a entrada e a saída.

Exemplos

-- Create a polygon from a shell without any holes
SELECT ST_MAKEPOLYGON(ST_GEOGFROMTEXT('LINESTRING(0 0, 1 0, 1 1)'));
-- Result:
+--------------------------------+
| _c0                            |
+--------------------------------+
| POLYGON ((0 0, 1 0, 1 1, 0 0)) |
+--------------------------------+

-- Create a polygon with both a shell and a hole
SELECT ST_MAKEPOLYGON(ST_GEOGFROMTEXT('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)'), ARRAY(ST_GEOGFROMTEXT('LINESTRING(2 2, 2 4, 4 4, 4 2, 2 2)')));
-- Result:
+--------------------------------------------------------------------+
| _c0                                                                |
+--------------------------------------------------------------------+
| POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0), (4 2, 4 4, 2 4, 2 2, 4 2)) |
+--------------------------------------------------------------------+

Tópicos relacionados