In JTS, quando faccio geometria.Buffer (1) .Buffer (-1), la geometria risultante sarà equivalente all'originale?
Domanda
Stavo avendo problemi mentre intersecavo due geometrie, ottenendo una Topology Exception probabilmente a causa di un errore di arrotondamento durante l'operazione, poi ho letto questa soluzione e ho provato a buffer(0)
Su entrambe le geometrie di input, ma ancora senza successo. Poi ho provato geo.buffer(1).buffer(-1)
E ha funzionato.
Queste geometrie saranno equivalenti a quelle originali?
Soluzione
Non so nulla di JTS, ma non può essere vero in generale.
Supponiamo che tu abbia due forme:
XXX XXX X X XXX XXX XXX
Dalla mia comprensione a buffer(1)
su entrambi si tradurrebbe all'incirca questo:
XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX
Adesso buffer(-1)
Non sarà in grado di produrre due risultati diversi da queste due forme.
Effettivamente a buffer()
L'operazione perde le informazioni, quindi non può essere annullata senza riagganciare tali informazioni da qualche altra parte.
Altri suggerimenti
Non credo che queste geometrie saranno le stesse. Per impostazione predefinita Buffering di comportamento una funzionalità Aggiungi vertici alla sua configurazione originale e non vi è alcuna garanzia che gli stessi vertici vengano rimossi.
Prova a fare un buffer molto piccolo, A.Buffer (0,00001), ad esempio (1/1000th mm, se coordinate nei sistemi metrici).
In Postgis alcuni problemi vengono corretti facendo questo.