No JTS, quando eu faço geometria.Buffer (1) .Buffer (-1), a geometria resultante será equivalente ao original?
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?
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.