Cómo pasar de Single Part a Multi Part utilizando PyQGIS

En el post pasado, consideramos el caso de convertir geometrías Multi Part a Single Part. En el de hoy, escribiremos sobre el caso contrario, es decir, del paso de Single Part a Multi Part utilizando PyQGIS. Este caso es más sencillo que el anterior porque la geometría Multi Part queda recogida, para el caso del vectorial tipo polígono que consideraremos a continuación, en una lista por comprensión que itera sobre todos los rasgos de este. El código completo es el siguiente:

layer = iface.mapCanvas().currentLayer()

features = layer.getFeatures()

geom_mult = [ feature.geometry().asPolygon() 
              for feature in features ] 

if len(geom_mult) >= 1 and len(geom_mult[0]) != 0:

    #creating a memory layer for multi polygon
    crs = layer.crs()
    epsg = crs.postgisSrid()
     
    uri = "MultiPolygon?crs=epsg:" + str(epsg) + "&field=id:integer""&index=yes"
     
    mem_layer = QgsVectorLayer(uri,
                               "multi_polygon",
                               "memory")
     
    QgsMapLayerRegistry.instance().addMapLayer(mem_layer)
     
    mem_layer.startEditing()

    feature = QgsFeature()

    #set geometry
    feature.setGeometry(QgsGeometry.fromMultiPolygon(geom_mult))

    #set attributes values
    feature.setAttributes([1])
    mem_layer.addFeature(feature, True)
     
    #stop editing and save changes
    mem_layer.commitChanges()

Cuando lo ejecutamos en la Python Console para el vectorial Single Part de la imagen siguiente:

single1

se obtiene la geometría Multi Part correspondiente (verificada en una línea que no se incluye en el código anterior); ver imagen siguiente:

single2

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