Importei alguns dados em um banco de dados Postgis e algumas das geometrias são relatadas inválidas (ST_IsValidReason relata auto-interseção ou auto-interseção de anel).
As consultas que estou executando não parecem afetadas pelo aspecto inválido dessas geometrias (só estou usando consultas ST_Distance).
Quais são as coisas que quebram quando as geometrias são inválidas?
A correção dessas geometrias "automaticamente" (buffer (geom, 0) ou ST_SimplifyPreserveTopology (geom, 0,0001)) é uma opção?
fonte
ST_Buffer(the_geom, 0.0000001)
pode fazer o truque para auto-interseção. Use-o apenas se as consequências de uma geometria um pouco maior não forem severas.ST_Buffer(the_geom, 0.0000001)
truque definitivamente ajuda muito.MULTIPOLYGON
dos dois polígonos, não como um únicoPOLYGON
. Tente obter o WKT original, se possível.Você pode impedir que geometrias inválidas entrem no seu banco de dados. Para usuários do PostgreSQL / PostGIS, isso é simples, com restrições de verificação . Por exemplo, considere uma tabela
public.my_valid_table
com uma coluna de geometrias de polígonosgeom
, use o seguinte SQL / DDL:Nota: esta tabela precisa ter polígonos válidos antes de aplicar a restrição.
Se você tentar inserir / adicionar uma geometria inválida, verá um erro:
fonte