segunda-feira, 28 de janeiro de 2013

Lidando com "TopologyException: side location conflict"

O erro "TopologyException: side location conflict" ocorria comigo quando usava a função st_intersection do PostGIS e uma das geometrias tinha intersecção com ela mesma (um segmento da geometria cruzava um outro segmento dessa mesma geometria (uma geometria em forma de "8" seria um exemplo).

Pra descobrir se o erro que estou tendo é esse mesmo uso a função st_isvalidreason(geometry), que deve retornar "Self-intersection[lon lat]".

Daí acessei o endereço http://www.sogis1.so.ch/sogis/dl/postgis/cleanGeometry.sql, copiei o código gerado e executei no banco onde estavam as geometrias com problemas.

Agora, em vez de executar st_intersection(the_geom1, the_geom2), executo st_intersection(cleanGeometry(the_geom1), the_geom2), e o erro não ocorre mais.

É uma solução muito rápida e funcional! Peguei essa dica em http://linfiniti.com/2010/07/cleaning-geometries-inside-postgis/

Thanks a lot to Tim Sutton and his friend Horst Duester!

Nenhum comentário:

Postar um comentário