Importé algunos datos en una base de datos de Postgis y algunas de las geometrías se informan no válidas (ST_IsValidReason informa de la auto-intersección o auto-intersección de anillo).
Las consultas que estoy realizando no parecen afectadas por el aspecto no válido de estas geometrías (solo estoy usando consultas ST_Distance).
¿Cuáles son las cosas que se rompen cuando las geometrías no son válidas?
¿Corregir estas geometrías "automáticamente" (buffer (geom, 0) o ST_SimplifyPreserveTopology (geom, 0.0001)) es una opción?
fuente
ST_Buffer(the_geom, 0.0000001)
podría hacer el truco para la auto intersección. Úselo solo si las consecuencias de una geometría ligeramente mayor no son graves.ST_Buffer(the_geom, 0.0000001)
truco definitivamente ayuda mucho.MULTIPOLYGON
de dos polígonos, no como uno soloPOLYGON
. Intenta obtener el WKT original si es posible.Puede evitar que geometrías no válidas ingresen a su base de datos en primer lugar. Para los usuarios de PostgreSQL / PostGIS, esto es simple de hacer con las restricciones de verificación . Por ejemplo, considere una tabla
public.my_valid_table
con una columna de geometrías de polígonosgeom
, use el siguiente SQL / DDL:Nota: esta tabla debe tener polígonos válidos antes de aplicar la restricción.
Si luego intentas insertar / agregar una geometría no válida, verás un error:
fuente