Como converter / tipográfica de Polygon para Multipolygon no PostGIS?

30

Existe alguma maneira de converter os polígonos para o tipo Multipolígono?

Por exemplo, eu criei um círculo usando ST_Buffer () em um ponto. O tipo de retorno dessa função é do tipo Polígono. O problema é que na coluna de geometria há uma restrição limitando-a ao tipo Multipolígono. Portanto, não consigo inserir um polígono simples.

Eu usei a função ST_MPolyFromText (), mas, como de costume, está retornando nulo para isso e ST_Dump () não está fornecendo a saída adequada.

A restrição é:

CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'MULTIPOLYGON'::text OR geom IS NULL),
Vicky
fonte
Existe um motivo para adicionar uma restrição multipolígono? Que tal alterar a restrição para polígono?
Underdark
Não é uma questão infantil de gis.stackexchange.com/questions/14198/… ?
Unicoletti 01/09/11
É, mas poderia ser reformulado para ser uma pergunta independente também.
Underdark
sim, essa é uma pergunta infantil, mas o problema é quando você importa o shapefile para o postgis que contém a camada de polígono e, automaticamente, cria a geometria do multipolígono. então, é um pouco entediante converter o tipo de dados de multipolígono em polígono .. porque isso será feito pelo cliente. Então, só tem que salvar a saída em que colummn desse tipo criado pelo postgis ..
Vicky
PS: para fazer o inverso, de multi-para-poli, use st_geometryn(geom, 1).
Peter Krauss

Respostas:

55

ST_Multi - Retorna a geometria como uma geometria MULTI *. Se a geometria já é um MULTI *, ela é retornada inalterada.

Exemplo:

SELECT ST_AsText(ST_Multi(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
        743265 2967450,743265.625 2967416,743238 2967416))')));
        st_astext
        --------------------------------------------------------------------------------------------------
        MULTIPOLYGON(((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,
        743238 2967416)))
        (1 row)
underdark
fonte