No JTS, quando eu faço geometria.Buffer (1) .Buffer (-1), a geometria resultante será equivalente ao original?

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Eu estava tendo problemas enquanto se cruzava duas geometrias, obtendo uma topologyException provavelmente devido a um erro de arredondamento durante a operação, depois li esta correção e tentei um buffer(0) Nas duas geometrias de entrada, mas ainda sem sucesso. Então eu tentei geo.buffer(1).buffer(-1) E funcionou.

Essas geometrias serão equivalentes aos originais?

Foi útil?

Solução

Não sei nada sobre JTS, mas não pode ser verdade em geral.

Suponha que você tenha duas formas:

 XXX      XXX
 X X      XXX
 XXX      XXX

Do meu entendimento um buffer(1) em ambos resultaria nisso:

XXXXX    XXXXX
XXXXX    XXXXX
XXXXX    XXXXX
XXXXX    XXXXX
XXXXX    XXXXX

Agora buffer(-1) Não será capaz de produzir dois resultados diferentes dessas duas formas.

Efetivamente a buffer() A Operação perde informações, por isso não pode ser desfeita sem adicionar essas informações de outro lugar.

Outras dicas

Eu não acho que essas geometrias serão as mesmas. Por padrão, o buffer de comportamento um recurso adiciona vértices à sua configuração original e não há garantia de que os mesmos vértices sejam removidos.

Tente fazer um buffer muito pequeno, A.Buffer (0,00001), por exemplo (1/1000 mm, se coordenarem em sistemas métricos).

No pós -gis, alguns problemas são corrigidos ao fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top