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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top