quinta-feira, 19 de abril de 2012

Procedimento para detectar e corrigir feições inválidas no PostgreSQL


-->
Para atender a expecificação do padrão OGC Simple Feature um polígono deve ter sua topologia verfiricada e validada. Para isto no Postgis é possível verificar utilizando uma conjunto de comandos como por exemplo estes:

1) select st_isValid(the_geom), gid from bioma_UF ;

Neste caso estamos apenas apresentando o resultado da validação e o número do gid de cada polígono.

Agora para facilitar vamos listar apenas os gid dos polígonos não válidos.

2) select gid from bioma_UF where not st_isValid(the_geom);

Sabendo que existe erro nestas features, podemos testar uma opção para tentar corrigir o problema.

3) select st_isValid(st_buffer(the_geom,0.0)), gid from bioma_UF where not st_isValid(the_geom); 

Assim podemos atualizar os dados com o seguinte comando:

UPDATE bioma_UF set the_geom = st_buffer(the_geom, 0.0) where not st_isValid(the_geom);

Outras boas dicas sobre este assunto podem ser encontradas em:


Outra opção:

update table set geomcol = st_multi(st_collectionextract(st_makevalid(geomcol),3))
    where st_isvalid(geomcol) = false;

update dados_brutos_2020.ucstodas set geom = 
st_multi(st_simplifypreservetopology(st_buffer(geom, 0.000001), 0.0001))