In JTS, quando faccio geometria.Buffer (1) .Buffer (-1), la geometria risultante sarà equivalente all'originale?

StackOverflow https://stackoverflow.com/questions/2470135

  •  20-09-2019
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top