Como transformar um recurso de várias partes selecionado em recursos de parte única durante a edição no QGIS?

9

Existem várias perguntas e respostas respectivas sobre como transformar uma camada de recursos de várias partes em uma única parte, usando o QGIS:

Mas todas as soluções que vi criaram uma camada totalmente nova e transformam TODAS as geometrias multipartes em únicas.

Portanto, a questão é: como se poderia, durante uma sessão de edição, transformar seletivamente um recurso de várias partes em um recurso de parte única, sem a necessidade de criar novas camadas?

Seria o oposto da ferramenta "mesclar recursos selecionados" e semelhante a explodir no ArcGIS.

Existe algum plugin fazendo isso? Como isso pode ser feito usando o console python?

Alexandre Neto
fonte

Respostas:

18

Inspirado por esta pergunta e resposta, como um exemplo de como "facilmente" é possível criar suas próprias soluções ao usar o Open Source, tentei criar meu próprio código para "seletivamente" explodir "recursos de várias partes durante uma sessão de edição.

Eu explorei a API do QGIS 1.8 pela primeira vez e criei esse código que é necessário para fazer o trabalho:

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)    

Como não sou um programador experiente, o código pode não ser o mais eficiente.

O próximo passo será criar um plugin com ele ... Ou pelo menos, tente!

UPDATE:
Consegui criar o plugin. Chama-se Multipart Split e pode ser encontrado no repositório oficial do QGIS.

Alexandre Neto
fonte
11
Seria possível trabalhar essa conversão Multipart -> Singlepart sem QGIS? Existe uma maneira de fazer isso com o Python autônomo? @Alexandre Neto
Akhil
Observe que esta solução depende da seleção de parte dos recursos de uma camada durante a edição na tela do mapa. Para converter todos os recursos de uma camada (digamos shapefile) em recursos de peça única, acho que você pode usar a biblioteca OGR. Dê uma olhada neste link .
Alexandre Neto
Felicidades! Ajuda .. !!
Akhil
Eu quero pegar uma camada que é um polígono de várias partes e convertê-la em uma única parte - não consigo encontrar o código python para fazer isso no qgis. Vejo que há um comando no vetor - ferramentas de geometria - Multiparts para Singleparts. este é o que eu quero Eu só preciso a sintaxe python
kflaw
@AlexandreNeto great plugin!
precisa saber é o seguinte