Diferencia de polígonos que se solapan mediante PyQGIS

Volviendo otra vez con las operaciones de geometría (clase QgsGeometry) vamos a considerar la diferencia entre dos polígonos que se solapan. Si se recuerda la definición de la diferencia de dos conjuntos A – B, esta representa la colección de todos los elementos que pertenecen a A y que no pertenecen a B. Si consideramos como A el polígono de la izquierda en la imagen siguiente, la representación gráfica de la diferencia (A – B) vendría siendo solo la parte de A ‘recortada’ por B o solo la parte de B ‘recortada’ por A si consideramos entonces (B – A).

diferencia1

Para verificarlo se tiene el codigo siguiente:

mapcanvas = iface.mapCanvas()

layers = mapcanvas.layers()

feat_p9 = layers[0].getFeatures().next()
feat_p10 = layers[1].getFeatures().next()

diff1 = feat_p9.geometry().difference(feat_p10.geometry()).exportToWkt()
diff2 = feat_p10.geometry().difference(feat_p9.geometry()).exportToWkt()

print diff1
print diff2

que imprime ambas diferencias en formato WKT (Well Known Text) para ser representadas en la Map View de QGIS utilizando el plugin ‘QuickWKT’.

En la imagen siguiente se tiene la diferencia del vectorial polígono9 menos el vectorial polígono10; donde a este último se le ha asignado 70 % de transparencia para observar que empalman de manera perfecta.

diferencia2

Sin embargo, hay que tener cuidado con estos vectoriales si pretendemos hacer un merge con ellos para representar la unión porque su intersección no produce una MultiLineString, como cabría suponer, para representar el borde entre ambos. Produce más bien un Polygon que representa un agujero entre ambos polígonos. Sin embargo, es tan delgado que visualmente puede confundirse con una MultiLineString.

En la imagen siguiente se tiene la diferencia del vectorial polígono10 menos el vectorial polígono9 pero en este caso se ha prescindido de visualizar a polígono9 para observar como la diferencia produce un vectorial que parece haber sido “recortado” por el otro.

diferencia3

Esta entrada fue publicada en PyQGIS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s