CodeGeo: Unir polígonos de outra tabela espacial no Postgis
Unir polígonos de outra tabela espacial no Postgis
Há tempos me deparei com a seguinte situação:
A cidade em que moro é dividida em setores, esses setores nada mais são que a união de determinados bairros, como não tínhamos essa tabela de setores, ela foi criada e o insert desses setores ficou da seguinte forma:
INSERT INTO setores_op(descricao, the_geom) VALUES ('Setor 6', (SELECT ST_Union(ARRAY(SELECT the_geom FROM bairros WHERE gid IN (22,23)))));
Nesse caso, estou unindo os bairros de gid = 22 e 23, gerando um polígono que vai ser denominado Setor 6, poderia unir quantos polígonos fosse necessário acrescentando o gid na cláusula IN do nosso SQL. O problema desse código é que as vezes ficam alguns buracos no meio do polígono criado, caso isso aconteça pode-se executar o seguinte SQL:
UPDATE setores_op SET the_geom=(SELECT ST_Polygon(ST_ExteriorRing(the_geom), 29193) FROM setores_op WHERE gid = 10)WHERE gid = 10;
A função St_ExteriorRing() vai levar em consideração apenas os vértices exteriores, descartando os vértices que se encontram no interior do polígono.