Intersección de líneas con polígonos en PyQGIS

Continuando con los aspectos de geoproceso que no se encuentran por defecto en QGIS, hoy tocará escribir sobre la intersección de líneas con polígonos; lo cual puede realizarse sin mucho esfuerzo con las clases ya desarrolladas en PyQGIS. Como son geometrías distintas, no puedo apelar al método familiar de iface, ‘activeLayer’, sino a ‘mapCanvas’ para acceder indirectamente al registro de layers. Para probar mi procedimiento emplearé un vectorial tipo línea que he utilizado en otras oportunidades y un polígono complejo que he creado para la ocasión; tal como se observa en la imagen siguiente:

int_line_polygon1

El código desarrollado se encuentra a continuación y el algoritmo está condensado en una lista por comprensión. El resultado son varias MultiLineString que se imprimen al final del código en formato WKT (Well Known Text).

mapcanvas = iface.mapCanvas()

layers = mapcanvas.layers()

feats1 = [ feature for feature in layers[0].getFeatures() ]

feats2 = [ feature for feature in layers[1].getFeatures() ]

n_feats1 = len(feats1)
n_feats2 = len(feats2)

#comprehension list
geom3 = [ feats1[i].geometry().intersection(feats2[j].geometry()).exportToWkt()
          for i in range(n_feats1)
          for j in range(n_feats2)
          if feats1[i].geometry().intersects(feats2[j].geometry()) ]

for item in geom3:
    print item

Después de ejecutado el código, copio las MultiLineString que se visualizan en formato WKT en la Python Console a la ventana del plugin QuickWKT para producir la memory layer de la imagen siguiente:

int_line_polygon2

Observen que el producto de la intersección son todas las polilíneas que se encuentran dentro del área del polígono.

En nuestro curso Online de PyQGIS, abordaremos todas las cuestiones fundamentales relativas al manejo de datos Raster con Python y QGIS. Además, también tratamos la temática relativa a PyQGIS para el manejo de datos vectoriales y una introducción a la creación de plugins mediante el ‘Plugin Builder’.

PRÓXIMA SESIÓN EL 20 DE OCTUBRE

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