Ich habe einige Daten in eine Postgis-Datenbank importiert und einige der Geometrien werden als ungültig gemeldet (ST_IsValidReason meldet Selbstschnitt oder Ring-Selbstschnitt).
Die Abfragen, die ich durchführe, scheinen vom ungültigen Aspekt dieser Geometrien nicht betroffen zu sein (ich verwende nur ST_Distance-Abfragen).
Was sind die Dinge, die brechen, wenn Geometrien ungültig sind?
Ist das Fixieren dieser Geometrien "automatisch" (Puffer (Geom, 0) oder ST_SimplifyPreserveTopology (Geom, 0,0001)) eine Option?
quelle
ST_Buffer(the_geom, 0.0000001)
könnte den Trick für die Selbstüberschneidung tun. Verwenden Sie es nur, wenn die Folgen einer etwas größeren Geometrie nicht schwerwiegend sind.ST_Buffer(the_geom, 0.0000001)
Trick hilft definitiv viel.MULTIPOLYGON
von zwei Polygonen verarbeitet werden, nicht als ein einzigesPOLYGON
. Versuchen Sie, wenn möglich, das Original-WKT zu erhalten.Sie können verhindern, dass ungültige Geometrien in Ihre Datenbank gelangen. Für PostgreSQL / PostGIS-Benutzer ist dies einfach mit Überprüfungsbeschränkungen zu tun . Betrachten Sie beispielsweise eine Tabelle
public.my_valid_table
mit einer Spalte mit Polygongeometriengeom
und verwenden Sie die folgende SQL / DDL:Hinweis: Diese Tabelle muss gültige Polygone enthalten, bevor die Einschränkung erzwungen wird.
Wenn Sie dann versuchen, eine ungültige Geometrie einzufügen / hinzuzufügen, wird ein Fehler angezeigt:
quelle