En JTS, cuando hago geometría. Buffer (1) .Buffer (-1), ¿la geometría resultante será equivalente al original?

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Estaba teniendo problemas mientras intersectaba dos geometrías, obteniendo una explicación de topología probablemente debido a un error de redondeo durante la operación, luego leí esta solución y probé un buffer(0) en ambas geometrías de entrada, pero aún sin éxito. Entonces intenté geo.buffer(1).buffer(-1) Y funcionó.

¿Estas geometrías serán equivalentes a las originales?

¿Fue útil?

Solución

No sé nada sobre JTS, pero no puede ser cierto en general.

Suponga que tiene dos formas:

 XXX      XXX
 X X      XXX
 XXX      XXX

De mi entendimiento a buffer(1) En ambos resultaría en aproximadamente esto:

XXXXX    XXXXX
XXXXX    XXXXX
XXXXX    XXXXX
XXXXX    XXXXX
XXXXX    XXXXX

Ahora buffer(-1) No podrá producir dos resultados diferentes de esas dos formas.

Efectivamente un buffer() La operación pierde información, por lo que no se puede deshacer sin volver a admitir esa información de otro lugar.

Otros consejos

No creo que estas geometrías sean las mismas. Por defecto, el comportamiento de Buffing una función Agregue los vértices a su configuración original, y no hay garantía de que se eliminarán los mismos vértices.

Intente hacer un búfer muy pequeño, A.Buffer (0.00001), por ejemplo (1/1000 mm, si coordina en sistemas métricos).

En Postgis se corrigen algunos problemas haciendo esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top