¿Cómo transformar una característica de múltiples partes seleccionada en características de una sola parte mientras se edita en QGIS?

9

Hay varias preguntas y respuestas respectivas sobre cómo hacer que una Capa de características de varias partes se convierta en una de características de una sola parte usando QGIS:

Pero todas las soluciones que vi crean una capa completamente nueva y transformarían TODAS las geometrías multiparte en una sola.

Entonces, la pregunta es, ¿cómo podría uno, durante una sesión de edición, transformar selectivamente una entidad de varias partes en una entidad de una sola parte, sin la necesidad de crear nuevas capas?

Sería lo contrario a la herramienta "fusionar entidades seleccionadas", y similar a explotar en ArcGIS.

¿Hay algún complemento haciendo esto? ¿Cómo podría hacerse esto usando la consola de Python?

Alexandre Neto
fuente

Respuestas:

18

Inspirado por esta pregunta y respuesta como un ejemplo de cuán "fácil" puede uno hacer sus propias soluciones al usar Código Abierto, he intentado crear mi propio código para "explotar" selectivamente las características de varias partes durante una sesión de edición.

He explorado la API QGIS 1.8 por primera vez, y salí con este código que parece hacer el trabajo:

layer = qgis.utils.iface.mapCanvas().currentLayer()
remove_list = []

for feature in layer.selectedFeatures():
    geom = feature.geometry()
    # check if feature geometry is multipart
    if geom.isMultipart():
        remove_list.append(feature.id())
        new_features = []
        temp_feature = QgsFeature(feature)
        # create a new feature using the geometry of each part
        for part in geom.asGeometryCollection ():
            temp_feature.setGeometry(part)
            new_features.append(QgsFeature(temp_feature))
        # add new features to layer
        layer.addFeatures(new_features, False)

# remove the original (multipart) features from layer
if len(remove_list) > 0:
    for id in remove_list:
        layer.deleteFeature (id)    

No soy un programador experimentado, por lo que el código podría no ser el más eficiente.

El siguiente paso será crear un complemento ... ¡O al menos, intentarlo!

ACTUALIZACIÓN:
pude crear el complemento. Se llama división multiparte y se puede encontrar en el repositorio oficial de QGIS.

Alexandre Neto
fuente
1
¿Sería posible trabajar esta conversión Multiparte -> Una parte sin QGIS? ¿Hay alguna manera de hacerlo con Python independiente? @Alexandre Neto
Akhil
Tenga en cuenta que esta solución depende de seleccionar parte de las características de una capa durante la edición en el lienzo del mapa. Para convertir todas las características de una capa (digamos shapefile) en características de una sola parte, creo que puede usar la biblioteca OGR. Echa un vistazo en este enlace .
Alexandre Neto
¡Salud! Ayuda .. !!
Akhil
Quiero tomar una capa que sea un polígono multiparte y convertirla en una sola parte; parece que no puedo encontrar el código de Python para hacer esto en qgis. Veo que hay un comando en vector - herramientas de geometría - Multiparts a Singleparts. esto es lo que quiero, solo necesito la sintaxis de Python
kflaw
@AlexandreNeto gran complemento!
DPSEspacial