Wenn ich in JTS Geometrie mache.
Frage
Ich hatte Probleme, während ich zwei Geometrien überschneidete und eine TopologyException erhielt, wahrscheinlich aufgrund eines Rundungsfehlers während der Operation, dann lese ich dann diese Fix und versuchte a buffer(0)
Bei beiden Eingabegeometrien, aber immer noch ohne Erfolg. Dann versuchte ich es geo.buffer(1).buffer(-1)
und es hat funktioniert.
Werden diese Geometrien den ursprünglichen entsprechen?
Lösung
Ich weiß nichts über JTS, aber es kann im Allgemeinen nicht wahr sein.
Angenommen, Sie haben zwei Formen:
XXX XXX X X XXX XXX XXX
Aus meinem Verständnis a buffer(1)
Beide würde ungefähr dazu führen:
XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX
Jetzt buffer(-1)
Kann nicht in der Lage sein, zwei verschiedene Ergebnisse dieser beiden Formen zu erzielen.
Effektiv a buffer()
Die Operation verliert Informationen, sodass sie nicht rückgängig gemacht werden kann, ohne diese Informationen von einem anderen Ort neu zu nutzen.
Andere Tipps
Ich glaube nicht, dass diese Geometrien gleich sein werden. Standardmäßig Verhaltenspufferung einer Funktion fügen Sie der ursprünglichen Konfiguration Scheitelpunkte hinzu, und es gibt keine Garantie dafür, dass die gleichen Scheitelpunkte entfernt werden.
Versuchen Sie, beispielsweise einen sehr kleinen Puffer, A. Buffer (0,00001) (1/1000. mm, wenn Koordinaten in metrischen Systemen)).
In PostGIS werden einige Probleme dadurch behoben.