En JTS, cuando hago geometría. Buffer (1) .Buffer (-1), ¿la geometría resultante será equivalente al original?
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?
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.