ST_MakePolygon
ST_MakePolygon tem duas variantes que retornam um polígono. Um leva uma única geometria, e outro leva duas geometrias.
A entrada da primeira variante é uma linestring que define o anel externo do polígono de saída.
A entrada da segunda variante é uma linestring e uma multilinestring. Ambas estão vazias ou fechadas.
O limite do anel exterior do polígono de saída é a linestring de entrada, e os limites dos anéis interiores do polígono são as linestrings na entrada multilinestring. Se a linestring estiver vazia, um polígono vazio será retornado. Linestrings vazias na multilinestring são ignoradas. O valor do identificador do sistema de referência espacial (SRID - spatial reference system identifier) da geometria resultante é o SRID comum das duas geometrias de entrada.
A dimensão da geometria retornada é a mesma das geometrias de entrada. O anel exterior e os anéis interiores devem ter a mesma dimensão.
Sintaxe
ST_MakePolygon(geom1)
ST_MakePolygon(geom1, geom2)
Argumentos
- geom1
-
Um valor de tipo de dados
GEOMETRY
ou uma expressão que é avaliada como um tipoGEOMETRY
. O subtipo deve serLINESTRING
. O valor de linestring deve ser fechado ou vazio. - geom2
-
Um valor de tipo de dados
GEOMETRY
ou uma expressão que é avaliada como um tipoGEOMETRY
. O subtipo deve serMULTILINESTRING
.
Tipo de retorno
GEOMETRY
de subtipo POLYGON
.
O identificador do sistema de referência espacial (SRID - spatial reference system identifier) da geometria retornada é igual ao SRID das entradas.
Se geom1 ou geom2 for nulo, null será retornado.
Se geom1 não for uma linestring, será retornado um erro.
Se geom2 não for uma multilinestring, será retornado um erro.
Se geom1 não for fechado, será retornado um erro.
Se geom1 for um único ponto ou não estiver fechado, será retornado um erro.
Se geom2 contém pelo menos uma linestring com um único ponto ou não for fechada, será retornado um erro.
Um erro será retornado se geom1 e geom2 tiverem valores de SRIDs diferentes.
Se geom1 e geom2 tiverem dimensões diferentes, um erro será retornado.
Exemplos
O SQL a seguir retorna um polígono de uma linestring de entrada.
SELECT ST_AsText(ST_MakePolygon(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)')));
st_astext
---------------
POLYGON((77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07))
O SQL a seguir cria um polígono a partir de uma linestring fechada e uma multilinestring fechada. O linestring é usado para o anel externo do polígono. As linestrings nas multilinestrings são usadas para os anéis interiores do polígono.
SELECT ST_AsEWKT(ST_MakePolygon(ST_GeomFromText('LINESTRING(0 0,10 0,10 10,0 10,0 0)'), ST_GeomFromText('MULTILINESTRING((1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))')));
st_astext
----------------------------------
POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))