sábado, 5 de abril de 2014

Unir polígonos de outra tabela espacial no Postgis

Olá galera,

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.

Espero que a dica tenha sido útil.

Um grande abraço a todos e até a próxima !

2 comentários:

  1. Boa Gledson,

    Excelente a dica. Um ótima para evitar os "buracos" indesejados entre o polígono criado.

    ResponderExcluir
  2. Boa dica, Morang... digo, Gledson!
    :D

    ResponderExcluir